使用eclipse搜索和替换字符串索引超出范围

时间:2014-12-09 22:57:34

标签: eclipse search editor

我得到了这个奇怪的错误,如下所示。任何线索?我匹配aaaa \之类的行,我想拥有aaaa \

enter image description here

1 个答案:

答案 0 :(得分:1)

\s+所有 white spaces个字符匹配1次或更多次。所以搜索字符串中的额外空间虽然没有错,但是没用。但是,搜索字符串也可能只是\s+\\或更好[ \t]+\\,这样可以避免删除行终止符。

导致错误消息的错误在替换字符串中。

同样在替换字符串中,反斜杠是转义字符,这意味着下一个字符应该被解释为文字字符。必须在替换字符串中使用\\对文字反斜杠字符进行编码,如搜索字符串中所示。

替换字符串末尾只有一个反斜杠,没有更多字符。因此,这个反斜杠会转义未定义的字符。 Eclipse的代码不处理这种特殊错误情况,在替换字符串末尾有一个反斜杠,由于替换字符串无效而导致错误消息,或者替换字符串末尾的单个反斜杠被解释为文字字符而不是逃避角色。

Eclipse将这个单反斜杠解释为不存在的下一个字符的转义字符,然后访问替换字符串索引3处的字符,尽管替换字符串只有3个字符,索引2处的最后一个字符。结果是低级例程检查超出范围访问字符串输出错误消息

String index out of range: 3

更正是使用有效的替换字符串,其中 \\带有两个反斜杠。