0

我有这个问题:

从文件加载的文本“ABCD\r\nEFGHJ”与 java 正则表达式“EFGH”匹配。Matcher 对象当然表示匹配字符串的开头位于位置 6。匹配器将 \r \n 计为两个位置。

我将原始文本放在 AWT TextArea 组件中,然后调用 select(6,10) 以突出显示匹配的区域。你猜怎么着......它从“F”字母开始突出显示。一个位置比它应该的...

如果超过 1 对 crlf 在匹配区域之前,则突出显示会比应有的更向前移动。

任何人有任何简单的解决方案?

4

3 回答 3

1

简单的解决方案:从文本中删除所有 \r ... :-P

不像听起来那么愚蠢,除非你有不一致的行尾(它可能发生)并且想要保持它们不变......这可能就是组件所做的事情。

于 2008-10-24T11:20:08.867 回答
0

如果 \r\n 一致,您可以在运行正则表达式之前删除 \r,然后在移交给下一个之前替换它们。或更改副本,如果效果更好。这样,您的正则表达式以与 AWT 所期望的一致的方式找到位置。

于 2008-10-24T14:20:56.213 回答
0

我不能弄乱文本,因为它是协议数据,并且 \r 和 \n 字符具有与显示或行分隔无关的语义。我只想要一个组件,它将分别处理每个输入字符并将其视为一个显示和计数,无论它如何显示。

于 2008-10-24T12:11:23.667 回答