字符串出现时仅替换单个“ \ n”

时间:2018-12-21 14:27:44

标签: c# string

我在C#中有一个字符串,可以包含多个\n字符。例如:

string tp = "Hello\nWorld \n\n\n !!";

如果一次出现\n,我想用某种东西代替它,但是如果一个以上的\n一起出现在同一位置,我想让它们一个人呆着。因此,对于上面的tp字符串,我想替换\nHello之间的World,因为该位置只有一个,而剩下三个{{1 }}更靠近字符串的结尾,因为它们出现在组中。

如果我尝试在C#中使用\n方法,它将替换所有方法。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

您可以尝试使用正则表达式:只要$为单字母,就将\n更改为"*"

\n

答案 1 :(得分:0)

使用循环的解决方案:

char[] c = "\t"+ tp + "\t".ToCharArray();
for(int i = 1; i < c.Length - 1; i++)
  if(c[i] == '\n' && c[i-1] != '\n' && c[i+1] != '\n')
    c[i] = 'x';
tp = new string(c, 1, c.Length-2);

答案 2 :(得分:0)

使用正则表达式并结合negative lookbehind and lookahead

 var test = "foo\nbar...foo\n\nbar\n\n\nfoo\r\nbar";
 var replaced = System.Text.RegularExpressions.Regex.Replace(test, "(?<!\n)\n(?!\n)", "_");
 // only first and last \n have been replaced

在输入中搜索正则表达式时,它会在找到的任何"\n"处停止,并验证是否"\n"不在当前位置后面或前面。 因此,只会替换单个"\n"