2008-10-24 24 views
0

我有這樣的問題:AWT文本區域似乎算CR-LF序列作爲一個字符

文本「ABCD \ r \ nEFGHJ」從文件與Java正則表達式「EFGH」匹配的加載。匹配對象當然表示匹配字符串的起始位置在6位置。匹配器將\ r \ n計爲兩個位置。

我將原始文本放在AWT TextArea組件中,然後調用select(6,10)來突出顯示匹配的區域。猜猜是什麼......它從'F'字母開始突出顯示。一個位置比它應該...

如果超過1對crlf先行匹配區域,然後突出顯示移動比它應該更加前進。

任何人有任何簡單的解決方案?

回答

1

簡單的解決方案:從文本中刪除所有\ r ... :-P

不一樣愚蠢,因爲它的聲音,除非你有行不一致的結束(可能發生),並要保留不變。 ..這可能是組件無論如何做的。

+0

ColdFusion事件有一個內置函數。安全的賭注。 – Tomalak 2008-10-24 12:01:39

0

我不能混淆文字,因爲它是協議數據和\ r和\ n字符有語義,不必與顯示或行分離。我只想要一個組件,它將分別對待每個輸入字符,並將其視爲一個顯示和計數,無論它如何顯示。

0

如果\ r \ n是一致的,您可以在運行正則表達式之前刪除\ r,然後在切換到下一個之前替換它們。或者更改副本,如果這樣做效果更好。這樣,您的正則表達式就會以與AWT期望的方式一致的方式找到位置。