我正在尝试从文本文件中删除新行。在记事本中打开文本文件并没有显示我正在尝试删除的换行符(它看起来像一个大墙的文本),但是当我在崇高中打开文件时,我可以看到它们。
在sublime中,我可以删除模式'\ n \ n',然后模式'\ n(?!AAD)'没问题。但是,当我运行以下代码时,生成的文本文件保持不变:
obj.flatMap(x => Future.sequence(x))
我做错了什么?
答案 0 :(得分:2)
如果您不想花费数小时尝试重新调整各种类型的换行符的代码,这是一个通用的解决方案:
string str = File.ReadAllText(fileloc);
File.WriteAllText(fileloc + "formatted",
Regex.Replace(Regex.Replace(str, "(?:\r?\n|\r){2}", ""), "(?:\r?\n|\r)(?!AAD)", "")
);
<强>详情:
换行符可以与(?:\r?\n|\r)
匹配:一个可选的CR,后跟一个强制性的LF。要匹配2个连续的换行符,可以附加限制量词 - (?:\r?\n|\r){2}
。
答案 1 :(得分:1)
经验解决方案。以二进制模式打开示例文件显示它包含0x0D个字符,这些字符是回车符\r
。所以我想出了这个(多行以便于调试):
public void Format(string fileloc)
{
var str = File.ReadAllText(fileloc);
var firstround = Regex.Replace(str, @"\r\r", "");
var secondround = Regex.Replace(firstround, @"\r(?!AAD)", "");
File.WriteAllText(fileloc + "formatted", secondround);
}
答案 2 :(得分:0)
这可能是windows / linux不匹配吗?尝试更换&#39; \ r \ n&#39;代替。