gpt4 book ai didi

java - 匹配字符串中最后一次出现的单词

转载 作者:行者123 更新时间:2023-12-01 11:40:14 26 4
gpt4 key购买 nike

目前,我正在java swing中实现一个文本框,它突出显示关键字。我引用了 this question 中给出的第二个答案。但是,我只想突出显示最后一次出现的单词。

例如,当用户输入“我晚上 7 点在学校游泳” 时,我希望文本框仅突出显示第二个“at”。我尝试在正则表达式中使用否定前瞻。但它不起作用。

我使用了(at(?!.at)|from|by)))而不是(at|from|by)

我尝试过的(从提供的链接引用):

  if (wordR == after || String.valueOf(text.charAt(wordR)).matches("\\W")) {
if (text.substring(wordL, wordR).matches("(\\W)*(at(?!.at)|from|by)"))
setCharacterAttributes(wordL, wordR - wordL, attr, false);
else
setCharacterAttributes(wordL, wordR - wordL, attrBlack, false);
wordL = wordR;
}

我认为正则表达式不起作用,因为检查是在用户键入时发生的,但不确定如何解决此问题。

最佳答案

为什么不使用 this method :

public int lastIndexOf(String str)

Returns the index within this string of the last occurrence of the specified substring, searching backward starting at the specified index.

如:

System.out.println("index =  " + "I have swimming at school at 7pm".lastIndexOf("at"));

您可以使用 lastIndexOf() 返回的值来设置 Swing 组件中 String 的属性,但显然,您需要重置您之前所做的操作,如下所述:Resetting attributes in a Document after inserting a String

如果您不这样做,则该单词的每个出现位置都将保持突出显示。

关于java - 匹配字符串中最后一次出现的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com