如何用 JtextPane 中的 contains() 方法替换单词

how to replace a word with in contains() Method form a JtextPane

好吧,我正在尝试使用 contains() 方法替换一个词:

String z = tfB.getText().toString();
String show = textPane.getText().toString();
   if(show.contains(z)){

     // how I specify the word that were found and change it without 
        effecting anything with in that line

   }

好吧,我的主要观点是:

我想做的是从用户那里获取价值。 然后搜索是否发现用某些东西替换它。例如:

 String x = "one two three four five";

它应该将 textPane 设置为 "one two 3 four five"

"one two 3-three-3 four five"

谁能告诉我怎么做。

谢谢

What I'm trying to do is get the value from the user. then search if it found replace it with something.

不要使用 contains() 方法,因为您需要搜索文本两次:

  1. 一次查看是否在字符串中找到文本
  2. 再次用新字符串替换文本。

请改用 String.indexof(...) 方法。如果在字符串中找到它,它将 return 文本的索引。

那么您应该直接在文本窗格的文档中替换文本,而不是在字符串本身中。所以代码应该是这样的:

int length = textPane.getDocument().getLength();
String text = textPane.getDocument().getText(0, length);
String search = "abc...";
int offset = text.indexOf(search);

if (offset != -1)
{
    textPane.setSelectionStart(offset);
    textPane.setSelectionEnd(offset + search.length();
    textPane.replaceSelection("123...");
}

此外,并不是说您从文档中获取文本,而不是从文本窗格中获取文本。这是为了确保在替换文档中的文本时偏移量是正确的。查看 Text and New Lines 了解更多信息,了解为什么这很重要。