gpt4 book ai didi

java - 如何在java中一次查找并替换一个出现的单词?

转载 作者:行者123 更新时间:2023-11-30 07:06:45 27 4
gpt4 key购买 nike

我正在开发一个文本编辑器,我希望用户能够查找并替换他们选择的单词。我目前有替换该单词的代码,但它会立即替换该单词的所有出现位置。我实际上想替换当时出现的这个词。例如,如果用户想要用“狗”替换“猫”,他们必须单击一个按钮,它将替换找到的第一个“猫”,然后用户必须再次单击该按钮来替换另一个一次出现一个。我确实浏览了这里的一些问题,但大多数问题似乎立即取代了所有发生的情况,这就是我遇到的问题。这是我到目前为止所拥有的。预先感谢任何能够帮助我的人。

class Bottom extends JPanel
{
private JPanel bottomPanel = new JPanel();
private JButton replaceButton = new JButton("Replace");
private JTextField textField = new JTextField("", 15);;
private JLabel label = new JLabel(" with ");
private JTextField textField2 = new JTextField("", 15);

public Bottom()
{
bottomPanel.add(replaceButton);
bottomPanel.add(textField);
bottomPanel.add(label);
bottomPanel.add(textField2);
add(bottomPanel);

replaceButton.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try{
String findText = textField.getText();
int findTextLength = findText.length();
String replaceText = textField2.getText();
int replaceTextLength = replaceText.length();
Document doc = textArea.getDocument();
String text = doc.getText(0, doc.getLength());
int counter = 0;
int lengthOffset = 0;

while ((lengthOffset = text.indexOf(findText, lengthOffset)) != -1)
{
int replaceOffset = lengthOffset + ((replaceTextLength - findTextLength) * counter);
textArea.select(replaceOffset, replaceOffset + findTextLength);
textArea.replaceSelection(replaceText);

lengthOffset += replaceTextLength;

counter++;
}
}catch(BadLocationException b){b.printStackTrace();}
}
});
}

}

最佳答案

while 替换为 if

你的循环说“只要你发现更多的出现,就继续替换”。如果您希望它仅替换第一个匹配项,则可能应该是“如果找到匹配项,则替换”。

另一个解决方案可能是将“替换”按钮重命名为“全部替换”;-)

关于java - 如何在java中一次查找并替换一个出现的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39969565/

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