有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

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

    您可以使用this online regex tool.尝试更多组合


    编辑

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