如何用contains()方法替换一个单词形成一个JtextPane

时间:2015-03-01 10:42:24

标签: java swing user-interface replace contains

好吧,我正在尝试使用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"

任何人都可以告诉我该怎么做。

谢谢

1 个答案:

答案 0 :(得分:0)

  

我要做的是从用户那里获取价值。然后搜索它是否找到替换它的东西。

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

  1. 一次查看文字是否在字符串中找到
  2. 再次用新字符串替换文本。
  3. 相反,请使用String.indexof(...)方法。它将返回在String中找到的文本的索引。

    然后,您应该直接在文本窗格的文档中替换文本,而不是在字符串本身中。所以代码就像:

    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了解更重要的信息。