1
我正在使用文本編輯器,我希望用戶能夠找到並替換他們選擇的單詞。我目前有代碼來替換這個詞,但它一次代替了這個詞的所有出現。我實際上想在這個時候替換一次。例如,如果用戶想用「狗」代替「貓」,他們將不得不點擊一個按鈕,它將代替它找到的第一個「貓」,然後用戶將不得不再次單擊該按鈕來替換其他一次一個。我在這裏查看了一些問題,但其中大部分似乎都是一次性替換所有事件,這就是我所遇到的問題。這是我迄今爲止所擁有的。在此先感謝任何能夠幫助我的人。如何在java中一次查找並替換一個單詞?
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();}
}
});
}
}
當然,它會是如此簡單。我甚至沒有想到這一點。非常感謝。這絕對解決了整個問題,而無需使用replaceFirst方法。謝謝! – Jay