如何'修剪'多行字符串?

时间:2013-01-07 23:03:20

标签: c# string text trim

我尝试在多行字符串上使用Trim(),但只有第一行Trim()。我似乎无法弄清楚如何从每行的开头删除所有空格。

string temp1 = "   test   ";
string temp2 = @"   test
                    line 2 ";

MessageBox.Show(temp1.Trim());
//shows "test".

MessageBox.Show(temp2.Trim());
//shows "test"
        "       line2 ".

我可以在多行字符串上使用Trim / TrimStart / TrimEnd吗?

6 个答案:

答案 0 :(得分:13)

  

我可以在多行字符串上使用Trim / TrimStart / TrimEnd吗?

是的,但它只修剪字符串作为一个整体,并没有注意字符串内容中的每一行。

如果您需要修剪每一行,您可以执行以下操作:

string trimmedByLine = string.Join(
                             "\n", 
                             temp2.Split('\n').Select(s => s.Trim()));

答案 1 :(得分:11)

修剪每一行

temp2 = string.Join(Environment.NewLine, 
    temp2.Split(new []{Environment.NewLine},StringSplitOptions.None)
         .Select(l => l.Trim()));

答案 2 :(得分:1)

string temp3 = String.Join(
                    Environment.NewLine, 
                    temp2.Split(new char[] { '\n', '\r' },StringSplitOptions.RemoveEmptyEntries)
                         .Select(s => s.Trim()));

答案 3 :(得分:0)

拆分,修剪,加入

string[] lines = temp1.Split(new []{Environment.NewLine});
lines = lines.Select(l=>l.Trim()).ToArray();
string temp2 = string.Join(Environment.NewLine,lines);

答案 4 :(得分:0)

您可以使用正则表达式来执行此操作。

这是一个PHP(我在Mac上,所以没有C#)preg_replace这样做的例子

<?php

$test = "   line 1     
     line 2 with blanks at end     
     line 3 with tabs at end        ";

print $test;

$regex = '/[ \t]*\n[ \t]*/';
$res = trim(preg_replace($regex, "\n", $test));
print $res;

正则表达式preg_replace删除换行符周围的空白,修剪删除了开头和结尾处的空白。

C#Regex.Replace方法应该像preg_replace一样工作。

答案 5 :(得分:-1)

关闭主题,但在使用此代码的PowerShell注销中:

$content = Get-Content file.txt;
$trimmed = $content.Trim();

很明显,$content数组,所以PS会为每一行神奇地执行Trim

将其强制为字符串:

[System.String]$content = Get-Content file.txt;

由于PowerShell之后无法工作,然后删除所有回车以创建一行..!