java如何在JTextPane中获取插入符号周围的字符串?
例如,有一个JTextPane,其中包含一些文本,如“123456abcd789”,插入符号现在位于“7”之间
请参见以下说明: “公元前123456年| 789年”。此处的“|”表示插入符号
现在我想得到插入符号前最长的字符串,它只包含a-z,这里是“abcd”
但是如果我使用jtextpane方法。getCaretPosition(),我将得到一个整数11。(因为插入符号前有10个ascii字符和一张图片)。这不是我想要的整数。也许我可以计算imgs的字符数,但这仍然很麻烦,而且很容易出现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>
在上面的示例中,插入符号现在位于第二句中
我想做的是将插入符号前的“everyone”替换为“everyone”(其余的“everyone”保持不变)。但是如果我使用getCaretPosition(),我将无法获得“!”的正确索引在HTML文本中
那么解决办法是什么呢
# 1 楼答案
可以使用正则表达式计算从a到Z和a到Z的字符数
这将是正确的表达式:
([a-zA-Z]+)
您可以使用this online regex tool.尝试更多组合
编辑
Here是可以使用的正则表达式