【问题标题】:AWT TextArea seems to count cr-lf sequence as one characterAWT TextArea 似乎将 cr-lf 序列计为一个字符
【发布时间】:2010-09-18 23:41:55
【问题描述】:

我有这个问题:

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

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

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

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

【问题讨论】:

    标签: java awt


    【解决方案1】:

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

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

    【讨论】:

    • ColdFusion 事件有一个内置函数。安全的赌注。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-01-27
        • 1970-01-01
        • 2019-03-14
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-07
        相关资源
        最近更新 更多