我尝试在多行字符串上使用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
吗?
答案 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之后无法工作,然后删除所有回车以创建一行..!