Iam*_*per 43 .net c# string newline
我需要摆脱出现在我的字符串中的所有换行符(来自db).我使用以下代码执行此操作:
value.Replace("\r\n", "").Replace("\n", "").Replace("\r", "")
Run Code Online (Sandbox Code Playgroud)
我可以看到,至少有一个角色表现得像行结束,幸存下来.字符代码是8232.
这对我来说很蹩脚,但我必须说这是我第一次有幸看到这个角色.显而易见,我可以直接替换这个字符,但我正在考虑将我当前的方法(基于替换"\ r"和"\n"的组合)扩展到更加可靠的东西,因此它不仅包括' 8232'char,还有其他所有人都没有找到我.
对于这样的问题,你有防弹方法吗?
编辑#1:
在我看来,有几种可能的解决方案:
我会说最好的结果将是应用第一和第四种方法之后,但我无法确定哪种方法会更快.您认为哪一个是最完整的?
编辑#2
我在下面发了anwer.
Iam*_*per 62
下面是解决我的问题的扩展方法.LineSeparator和ParagraphEnding当然可以在其他地方定义,如静态值等.
public static string RemoveLineEndings(this string value)
{
if(String.IsNullOrEmpty(value))
{
return value;
}
string lineSeparator = ((char) 0x2028).ToString();
string paragraphSeparator = ((char)0x2029).ToString();
return value.Replace("\r\n", string.Empty)
.Replace("\n", string.Empty)
.Replace("\r", string.Empty)
.Replace(lineSeparator, string.Empty)
.Replace(paragraphSeparator, string.Empty);
}
Run Code Online (Sandbox Code Playgroud)
Ed *_*tes 13
8232(0x2028)和8233(0x2029)是您可能想要消除的唯一其他.请参阅char.IsSeparator的文档.
在这个问题上对约塞连的道具,我认为他是对的.用一个空格替换所有空格:
data = Regex.Replace(data, @"\s+", " ");
Run Code Online (Sandbox Code Playgroud)