当前位置:  开发笔记 > 编程语言 > 正文

正则表达式(C#):将\n替换为\ r \n

如何解决《正则表达式(C#):将\n替换为\r\n》经验,为你挑选了3个好方法。

如何使用C#中的正则表达式将\n的单个实例替换为\ r \n(LF单独使用CRLF)?

对不起,如果这是一个愚蠢的问题,我是Regex的新手.

我知道要用计划来做String.Replace,比如:

myStr.Replace("\n", "\r\n");
myStr.Replace("\r\r\n", "\r\n");

然而,这是不优雅的,并且会破坏文本中已经存在的任何"\ r +\r \n"(尽管它们不太可能存在).



1> Kibbee..:

如果你使用它可能会更快.

(?

它基本上寻找任何\n前面没有\ r的\n.这很可能会更快,因为在另一种情况下,几乎每个字母都匹配[^\r],所以它会捕获它,然后在那之后寻找\n.在我给出的示例中,它只会在找到\n时停止,然后在它们之前查看它是否找到了\ r



2> chakrit..:

这会吗?

[^\r]\n

基本上它匹配一个前面带有'\ r'字符的'\n'.

如果你想要检测只以一个'\n'开头的行,那么试试吧

([^\r]|$)\n

这表示它应匹配'\n',但只匹配一行的第一个字符或那些带'\ r'的字符

可能有特殊情况需要检查,因为你弄乱了行本身的定义,'$'可能效果不好.但我认为你应该明白这个想法.

编辑:信用@Kibbee使用前瞻显然更好,因为它不会捕获匹配的前面的字符,并且也应该帮助任何边缘情况.所以这里是一个更好的正则表达式+代码变成:

myStr = Regex.Replace(myStr, "(?


应该是myStr = Regex.Replace(myStr,"(?
3> wanted..:

我试图将下面的代码写成一个字符串,但它无法正常工作.

myStr.Replace("(?

我使用Regex.Replace并且它有效

Regex.Replace( oldValue, "(?


这是预期的; [String#Replace](http://msdn.microsoft.com/en-us/library/system.string.replace.aspx)不是正则表达式.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有