删除某些不属于不同字符串的字符串?

时间:2015-06-30 12:13:07

标签: c# string

我一直在使用Unity中的字符串,但目前我不知道该怎么做。

问题是,Unity仅使用/ n作为新行,而大多数将放在db中的文本使用/ r / n。如果没有触摸它们就可以完成没有太多麻烦,但如果我删除一个换行符并将两个字符串合并到Unity中的一行,/ r总是留在那里。

通常,这不会导致任何问题,因为它们会被忽略,但是,我试图在其文本中添加一些功能。

简而言之:如何在不删除/ r / n的情况下删除“/ / no / r / n cow / n level”中的/ n和/ r?

2 个答案:

答案 0 :(得分:3)

(假设您实际上在谈论\r\n,因为您提到“新行”)

简单(或快速)方式

s.Replace("\r\n", @"\/r\/n").Replace("\r","").Replace("\n","").Replace(@"\/r\/n","\r\n")

如果您的字符串中没有"\/r\/n",这将是有效的,这可能是真的

正则表达式(或安全)方式

s = Regex.Replace(s, "\r([^\n])", "$1");
s = Regex.Replace(s, "([^\r])\n", "$1");

在模式正则表达式中,使用括号[^\r]捕获[^\n]( ),您可以在替换中重复使用此捕获,这就是$1的含义位

答案 1 :(得分:2)

正则表达式替换将帮助您

var input = "there is/r no/r/n cow/n level";
var result = Regex.Replace(input, @"(?<!(/n)|(/r))((/n)|(/r))(?!(/n)|(/r))", String.Empty);

这表示匹配/ r或/ n之前或后面没有/ r或/ n。