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

Java 如何在JTextPane中获取插入符号周围的字符串?,java,jtextpane,Java,Jtextpane,例如,有一个JTextPane,其中包含一些文本,如“123456abcd789”,插入符号现在位于“7”之间 请参见以下说明: “公元前123456年| 789年”。此处的“|”表示插入符号 现在我想得到插入符号前最长的字符串,它只包含a-z。这里应该是“abcd” 但是如果我使用jtextpane.getCaretPosition()方法,我将得到一个整数11(因为在插入符号之前有10个ascii字符和一张图片)。这不是我想要的整数。也许我可以计算imgs的字符数,但这仍然很麻烦,而且很容易

例如,有一个JTextPane,其中包含一些文本,如“123456abcd789”,插入符号现在位于“7”之间

请参见以下说明: “公元前123456年| 789年”。此处的“|”表示插入符号

现在我想得到插入符号前最长的字符串,它只包含a-z。这里应该是“abcd”

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

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

例子


大家好

大家好|
//插入符号在这里,在“!”的左边

大家好

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

我想做的是将插入符号前的“everyone”替换为“everyone”(其余的“everyone”保持不变)。但是如果我使用getCaretPosition(),我将无法获得“!”的正确索引在HTML文本中


那么解决方案是什么呢?

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

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

你可以尝试更多的组合使用


编辑


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

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

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

你可以尝试更多的组合使用


编辑


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

呃,我不是问如何找到字符数/[a-z]+/。事实上,当我使用方法jtextpane.getText()时,我会得到类似这样的结果:“123456abcd789

”,我想做的是在这个字符串中获得“7”的索引。正如您所知,字符串中可能不止一个“7”…您可以使用正确的正则表达式(例如字符串:“123456abcd789

”)解析字符串,然后提取要检查的组。如果您希望操作纯文本,为什么要使用HTMLDocument(包含html内容的JTextPane)?无论如何,如果您确定自己的选择,请使用Jsoup操作生成的html。text()方法将变得非常方便。谢谢您的回答!但我想做的是找到插入符号的位置。哦,我会修改我的问题使它更清楚。顺便说一句,当我使用HTMLDocument时,我发现我语言中的一些单词变成了空方块(尽管我已经将内容类型设置为“text/html;charset=utf-8”,但问题仍然存在)。这就是我不使用它的原因…你对此有什么想法吗?无论如何,非常感谢你!!最后,我使用正则表达式清除html中的所有标记和/\n*/,编写了一个方法来读取html中的可视字符,以便找到插入符号对应的位置,并获得满意的结果。无论如何,谢谢你!呃,我不是问如何找到字符数/[a-z]+/。事实上,当我使用方法jtextpane.getText()时,我会得到类似这样的结果:“123456abcd789

”,我想做的是在这个字符串中获得“7”的索引。正如您所知,字符串中可能不止一个“7”…您可以使用正确的正则表达式(例如字符串:“123456abcd789

”)解析字符串,然后提取要检查的组。如果您希望操作纯文本,为什么要使用HTMLDocument(包含html内容的JTextPane)?无论如何,如果您确定自己的选择,请使用Jsoup操作生成的html。text()方法将变得非常方便。谢谢您的回答!但我想做的是找到插入符号的位置。哦,我会修改我的问题使它更清楚。顺便说一句,当我使用HTMLDocument时,我发现我语言中的一些单词变成了空方块(尽管我已经将内容类型设置为“text/html;charset=utf-8”,但问题仍然存在)。这就是我不使用它的原因…你对此有什么想法吗?无论如何,非常感谢你!!最后,我使用正则表达式清除html中的所有标记和/\n*/,编写了一个方法来读取html中的可视字符,以便找到插入符号对应的位置,并获得满意的结果。无论如何,谢谢你!
<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>