如何获取 JTextPane 中插入符号周围的字符串?
How to get the string in the JTextPane around the caret?
例如,有一个 JTextPane,其中包含一些文本,如“123456abcd789”,插入符号现在位于“7”之间。
请看这里的解释:
“123456abcd|789”。这里的'|'代表插入符号。
现在我想获得插入符前最长的字符串,它只包含 a-z。这里是“abcd”。
但是如果我使用方法 jtextpane.getCaretPosition(),我会得到一个整数 11。(因为插入符号前有 10 个 ascii 字符和一张图片)。这不是我想要的整数。也许我可以统计img的字符数,但是还是比较麻烦,而且容易出bug。
那么如何得到正确的字符串呢?
示例
<html>
<body>
<p>
Hello, everybody!!<br>
<img src="xx.jpg">
</p>
<p>
Hello, everybody|!!<br> //The caret is here, at the left of '!'
<img src="xx.jpg">
</p>
<p>
Hello, everybody!!<br>
<img src="xx.jpg">
</p>
</body>
<html>
在上面的示例中,插入符号现在位于第二个句子中。
我想做的是将插入符号前的“everybody”替换为“everyone”(其余的“everybody”保持不变)。但是,如果我使用 getCaretPosition(),我将无法获得 '!' 的正确索引。在 HTML 文本中。
那么解决方案是什么?
您可以使用正则表达式来计算从 A 到 Z 和 a 到 z 的字符数。
正确的表达方式是:([a-zA-Z]+)
您可以使用 this online regex tool.
尝试更多组合
编辑
Here 是您可以使用的正则表达式。
例如,有一个 JTextPane,其中包含一些文本,如“123456abcd789”,插入符号现在位于“7”之间。
请看这里的解释: “123456abcd|789”。这里的'|'代表插入符号。
现在我想获得插入符前最长的字符串,它只包含 a-z。这里是“abcd”。
但是如果我使用方法 jtextpane.getCaretPosition(),我会得到一个整数 11。(因为插入符号前有 10 个 ascii 字符和一张图片)。这不是我想要的整数。也许我可以统计img的字符数,但是还是比较麻烦,而且容易出bug。
那么如何得到正确的字符串呢?
示例
<html>
<body>
<p>
Hello, everybody!!<br>
<img src="xx.jpg">
</p>
<p>
Hello, everybody|!!<br> //The caret is here, at the left of '!'
<img src="xx.jpg">
</p>
<p>
Hello, everybody!!<br>
<img src="xx.jpg">
</p>
</body>
<html>
在上面的示例中,插入符号现在位于第二个句子中。
我想做的是将插入符号前的“everybody”替换为“everyone”(其余的“everybody”保持不变)。但是,如果我使用 getCaretPosition(),我将无法获得 '!' 的正确索引。在 HTML 文本中。
那么解决方案是什么?
您可以使用正则表达式来计算从 A 到 Z 和 a 到 z 的字符数。
正确的表达方式是:([a-zA-Z]+)
您可以使用 this online regex tool.
尝试更多组合编辑
Here 是您可以使用的正则表达式。