【发布时间】:2011-07-08 04:04:30
【问题描述】:
我想通过 Eclipse 代码编辑器中的查找/替换方法从我的代码中删除所有空行。
我使用正则表达式 \n\s*\n 查找所有空行,但在用任何字符串替换空行时出现错误 "Incompatible line delimiter near index 55110"。
为什么会出现此错误以及如何正确删除空白行?工作替换角色会是什么?
这类工作有 eclipse 插件吗?
【问题讨论】:
我想通过 Eclipse 代码编辑器中的查找/替换方法从我的代码中删除所有空行。
我使用正则表达式 \n\s*\n 查找所有空行,但在用任何字符串替换空行时出现错误 "Incompatible line delimiter near index 55110"。
为什么会出现此错误以及如何正确删除空白行?工作替换角色会是什么?
这类工作有 eclipse 插件吗?
【问题讨论】:
你可以试试替换这个:
^\s*\r?\n
使用空字符串。
【讨论】:
尝试使用\R 而不是\n
\R 任何 Unicode 换行序列 \u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
【讨论】:
我不确定这是否是您特定问题的答案,但带有 \r\ .. 的解决方案表明它是 Windows 和 UNIX 文本编码之间的不兼容。所以一个简单的解决方案是将文件转换为 UNIX 编码
在 Eclipse 中Menu -> File -> Convert line delimiter -> Unix
【讨论】:
我试过你的表达方式,它结合了一些台词。我发现这个可以工作:
\n\s*$
替换为 [nothing]。
不过,无法解决这个神秘的错误。我想知道您是否有损坏的文件,可能是杂散的 CR/LF 混淆。
(至于插件...什么都不知道,但是,学习 awk、sed、perl...它们总能很好地为您提供各种文本处理工作。)
【讨论】:
在回答您关于incompatible line delimiter near index 错误的问题的第一部分时,Eclipse 似乎存在根据Text file encoding 和New text file line delimiter 设置替换给定行分隔符的问题。
我遇到了一个问题,即 Windows 应用程序错误地格式化了 UNIX 格式的源文件,在它认为合适的地方插入了 CRLF。由于特殊情况,我不得不用空格替换所有 CRLF。由于那个错误,Eclipse 不允许我这样做,但是抓住前面和后面的字符就可以了:
Find : (.)\r\n(.)
Replace: $1 $2
使用 wjans 建议的答案:
Find : ^\s*\r?\n(.)
Replace: $1
我希望这对那些仍然遇到incompatible line delimiter 错误的人有所帮助。
【讨论】:
这对我有用多年:
替换:[\t]+$
有空格
【讨论】:
多年来我一直遇到这个问题(或它的变体),我怀疑这是由于与 Mac 用户共享文件服务器造成的,特别是 Dreamweaver 的用户(基本上是图形艺术家)。看起来它将其编辑(上传?)的文件更改为混合/奇怪的行尾,似乎是 NL+CR(十六进制 0a0d)、双 CR(0d0d)和统一换行符(0a)的组合。
如果你在 vim 中打开同一个文件,它不是双倍行距,而是所有行都以 ^M 符号结尾。
不管怎样,这个页面上的解决方案都不适合我,但我找到了一些可行的方法。
您需要按顺序执行这些步骤(Eclipse 4.2.2)
1.) 文件 -> 将行分隔符转换为 -> MacOS 9 (CR, \r)
2.) 编辑 -> 查找/替换 (Ctrl - F)
Find: \r$
Replace: leave blank
3.) 全部替换
如果您没有按顺序执行此操作,或者您首先弄乱了文件,您将收到关于“不兼容的行分隔符”的错误,就像问题中一样。
【讨论】: