저는 텍스트 편집기로 작업 중이며 사용자가 원하는 단어를 찾아서 바꿀 수 있기를 바랍니다. 나는 현재 단어를 대체 할 코드가 있지만 단어의 모든 항목을 한 번에 바꿉니다. 사실 한 번 발생했던 단어를 대체하고 싶습니다. 예를 들어 사용자가 "cat"을 "dog"로 바꾸려면 버튼을 클릭해야하며 찾은 첫 번째 "cat"이 바뀌고 다른 하나를 바꾸려면 버튼을 다시 클릭해야합니다 한 번에 하나씩 나타납니다. 나는 여기에있는 몇 가지 질문을 살펴 봤지만, 대부분은 모든 사건을 즉시 대체하는 것처럼 보이고 그것이 내가 가진 문제이다. 이것은 내가 지금까지 가지고있는 것이다. 나를 도울 수있는 사람에게 미리 감사드립니다.자바에서 단어를 한 번에 하나씩 찾고 바꾸려면 어떻게합니까?
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