gpt4 book ai didi

java - 扫描 jTextArea 中的单词

转载 作者:行者123 更新时间:2023-12-01 13:13:02 24 4
gpt4 key购买 nike

我正在尝试创建一个搜索栏,突出显示文本区域中相应的单词。我遇到的问题是下面的代码示例仅突出显示文本区域中第一次出现的单词,即它不会扫描整个文本区域。如何使所有出现的关键字都突出显示?

public void keywordSearch() {
hilit.removeAllHighlights();
String keyword = txtSearch.getText();
String content = txtArea.getText();
int index = content.indexOf(keyword, 0);
if (index >= 0) { // if the keyword was found
try {

int end = index + keyword.length();
hilit.addHighlight(index, end, painter);
txtSearch.setBackground(Color.WHITE);

} catch (BadLocationException e) {
e.printStackTrace();
}
} else {
txtSearch.setBackground(ERROR_COLOR);// changes the color of the text field if the keyword does not exist
}
}

我已尝试使用 Scanner 类进行以下修复,但仍然不起作用。

Scanner sc = new Scanner(content);

if (index >= 0) { // if the keyword was found
try {
while(sc.hasNext() == true)
{
int end = index + keyword.length();
hilit.addHighlight(index, end, painter);
txtSearch.setBackground(Color.WHITE);
sc.next();
}

非常感谢任何帮助。提前致谢。

修复使用 while 循环(进入无限循环)

    while(index >= 0) {   // if the keyword is found
try {
int end = index + keyword.length();
hilit.addHighlight(index, end, painter);
txtSearch.setBackground(Color.WHITE);
index = content.indexOf(keyword, index);
System.out.println("loop");// test to see if entered infinite loop

} catch (BadLocationException e) {
e.printStackTrace();
}
}

最佳答案

关键在这里:

int index = content.indexOf(keyword, 0);
if (index >= 0) { // if the keyword was found

将其更改为 while 循环,从您第一次找到的索引再次搜索:

int index = content.indexOf(keyword, 0);
while (index >= 0) { // if the keyword was found
// Do stuff
index = content.indexOf(keyword, index);
}

您还需要更改最后的 else 来再次检查它是否存在(有多种方法可以做到这一点)。

关于java - 扫描 jTextArea 中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22693892/

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