我有一个数据流可能包含\ r,\n,\ r \n,\n\r或它们的任意组合.是否有一种简单的方法来规范化数据,使其全部简单地成为\ r \n对,以使显示更加一致?
所以会产生这种翻译表的东西:
\r --> \r\n \n --> \r\n \n\n --> \r\n\r\n \n\r --> \r\n \r\n --> \r\n \r\n\n --> \r\n\r\n
Derek Park.. 35
我相信这会做你需要的:
using System.Text.RegularExpressions; // ... string normalized = Regex.Replace(originalString, @"\r\n|\n\r|\n|\r", "\r\n");
我对确切的语法并不是100%肯定,而且我没有.Net编译器方便检查.我在perl中编写它,并将其转换为(希望是正确的)C#.唯一真正的诀窍是首先匹配"\ r \n"和"\n\r".
要将它应用于整个流,只需运行一大堆输入.(如果需要,可以使用流包装器执行此操作.)
原来的perl:
$str =~ s/\r\n|\n\r|\n|\r/\r\n/g;
测试结果:
[bash$] ./test.pl \r -> \r\n \n -> \r\n \n\n -> \r\n\r\n \n\r -> \r\n \r\n -> \r\n \r\n\n -> \r\n\r\n
更新:现在将\n\r转换为\ r \n,但我不会调用该规范化.
我相信这会做你需要的:
using System.Text.RegularExpressions; // ... string normalized = Regex.Replace(originalString, @"\r\n|\n\r|\n|\r", "\r\n");
我对确切的语法并不是100%肯定,而且我没有.Net编译器方便检查.我在perl中编写它,并将其转换为(希望是正确的)C#.唯一真正的诀窍是首先匹配"\ r \n"和"\n\r".
要将它应用于整个流,只需运行一大堆输入.(如果需要,可以使用流包装器执行此操作.)
原来的perl:
$str =~ s/\r\n|\n\r|\n|\r/\r\n/g;
测试结果:
[bash$] ./test.pl \r -> \r\n \n -> \r\n \n\n -> \r\n\r\n \n\r -> \r\n \r\n -> \r\n \r\n\n -> \r\n\r\n
更新:现在将\n\r转换为\ r \n,但我不会调用该规范化.
我和Regie的Jamie Zawinski在一起:
"有些人在面对问题时会想"我知道,我会使用正则表达式."现在他们有两个问题"
对于我们这些喜欢可读性的人:
步骤1
用\n替换\ r \n
用\n替换\n \n(如果你真的想要这个,有些海报似乎没有想到)
用\n替换\ r
步骤2用Environment.NewLine或\ r \n或其他替换\n.