我有一个文件,该文件以基本模式在emacs中加载。 (为安全起见,后缀是qqqrrrzzz,因此Emacs不会将其设置为文本模式并添加换行符。)我打开了空白模式,并且有很多$,显示换行符。
然后我运行以下Java代码:
out = out.replaceAll("(m?:\\R)", " ");
out = out.replace(System.getProperty("line.separator"), " ");
out = out.replace("\u0085", " ");
out = out.replace("\u0085", " ");
out = out.replace("\u2029", " ");
out = out.replaceAll("\\u0085", " ");
out = out.replaceAll("\\u2028", " ");
out = out.replaceAll("\\u2029", " ");
out = out.replaceAll("\\R", " ");
out = out.replaceAll("(\\r\\n|\\r|\\n)", " ");
out = out.replace("\r\n", " ");
out = out.replace("\r", " ");
out = out.replace("\n", " ");
out = out.replaceAll("\\r\\n", " ");
out = out.replaceAll("\\r", " ");
out = out.replaceAll("\\n", " ");
out = out.replace("a", "b")
(最后一点是确保我正在触摸文件。)
但是emacs文件中许多行末尾的$仍然存在-该文件并没有像应该的那样变成一长行。
请注意,我 CAN 在emacs中执行“ M-x query-replace-regex C-q C-j RET SPACE RET!”。瞧,文件中的所有内容都是一行。但是在Java中似乎没有任何作用。 :(
顺便说一下,我打开了自动恢复模式,或者在emacs中手动重新加载了文件,等等。我确定它已经被调整了,因为其他调整是通过replaceAll进行的。但没有长线验证。
困惑于庞沙托,
菲尔
(以上所有Java行都让我稍微想起了Last Jedi结束时卢克开枪的所有AT-AT ...)
答案 0 :(得分:0)
我建议替换所有非预期的换行符,因为其中有很多换行符类型:
out = out.replaceAll("[\\v&&[^\\n\\r]]", "");
这将替换所有\ v(垂直空格)减去期望的空格。
您可能还想看看以下类,它是标准Java中所有基于正则表达式的操作的基础。 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
该文档明确指出,不支持\ v,但是我已经使用了它,并且确实如此。 :)