如何在插入符号周围的JTextPane中获取字符串?

时间:2017-02-28 11:15:13

标签: java jtextpane

例如,有一个JTextPane有一些文本,如“123456abcd789”,插入符号现在在'7'之间。

请参阅此说明: “123456abcd | 789”。这里的'|'代表插入符号。

现在我想在插入符号之前获得最长的字符串,其中只包含a-z。这里将是“abcd”。

但是如果我使用方法jtextpane.getCaretPosition(),我将得到一个整数11.(因为在插入符号之前有10个ascii字符和一张图片)。这不是我想要的整数。也许我可以计算 img 的字符数,但它仍然很麻烦,容易出现错误。

那么如何获得正确的字符串?

实施例

<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>

在上面的示例中,插入符号现在位于第二句中。

我想要做的就是在插入符号之前将“所有人”替换为“每个人”(其余的“每个人都保持不变”)。但是,如果我使用getCaretPosition(),我将无法得到'!'的正确索引。在HTML文本中。

那么解决方案是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式计算从A到Z和a到z的字符数。

这是正确的表达式:([a-zA-Z]+)

您可以使用this online regex tool.

尝试更多组合

修改

Here是您可以使用的正则表达式。