Java代码问题: search and replace

标签 java search replace

有一个问题:我如何在 Java 中找到文本中的所有单词,例如 4 个符号长?然后我该如何替换它们?

为了找到我写的一些文字

<

fButton.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent event)
{int i=text.getText().indexOf(field2.getText(),text.getSelectionStart());
if(i>=0)
text.select(i,i+field2.getText().length());
text.requestFocusInWindow()

;>

我尝试组合按钮和字段,但只有 2 个错误:

symbol  : method parseInt (javax.swing.JTextField)
location: class java.lang.Integer
numb=Integer.parseInt(field2);
            ^
symbol  : method replaceAll (java.lang.String,javax.swing.JTextField)
location: class javax.swing.JTextArea
text = text.replaceAll("\\b\\w{4}\\b", field3);
           ^

代码:

 field2=new JTextField("Enter number",10);
    int numb;
    numb=Integer.parseInt(field2);
    tPanel.add(field2);
    JButton fButton=new JButton ("Find and Replace");
    tPanel.add(fButton);
    fButton.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent event)
    {
    text = text.replaceAll("\\b\\w{4}\\b", field3);
    }});
    field3=new JTextField("Enter replace",10);
    tPanel.add(field3);

看不懂((

最佳答案

您在问题中写了“符号”。我将把它解释为“单词字符”。如果您想要其他定义,请查看 regular expression summary in the Pattern api .

使用String.replaceAll(regularExpression, replacementText)要使用的正则表达式是 "\b\w{4}\b"

  • \b是“字边界”
  • \w是“单词字符”
  • {4} 是要匹配的“之前”符号的数量(在本例中为单词字符)

所以要替换字符串 text 中的所有 4 个字母的单词(注意所有 \ 都被另一个 \ 转义) :

text = text.replaceAll("\\b\\w{4}\\b", "replaced");

例如:

System.out.println("bla blaa hello test".replaceAll("\\b\\w{4}\\b", "mupp"));

输出:

bla mupp hello mupp

回答您更新后的问题:

下面的代码产生了这个截图:

screenshot

代码:

public static void main(String[] args) {

    final JTextArea area = new JTextArea("bla blaa hello test");
    final JTextField numberField  = new JTextField("4", 10);
    final JTextField replaceField = new JTextField("muff", 10);

    JButton button = new JButton(new AbstractAction("Replace") {
        public void actionPerformed(ActionEvent event) {
            String text = area.getText();
            int    syms = Integer.parseInt(numberField.getText());
            String repl = replaceField.getText();

            area.setText(text.replaceAll("\\b\\w{"+syms+"}\\b", repl));
        }
    });

    JPanel panel = new JPanel();
    panel.add(numberField);
    panel.add(replaceField);
    panel.add(button);

    JFrame frame = new JFrame("Test");
    frame.add(area, BorderLayout.CENTER);
    frame.add(panel, BorderLayout.NORTH);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);
}

关于Java代码问题: search and replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7295127/

相关文章:

java - 如何有效地检查两个字符是否是键盘上的邻居?

java - 如何交错Java 8 Stream?类似于 Collectors.joining() 但对于字符串以外的东西

sharepoint - 您能否在不提供密码的情况下在 SharePoint 中执行模拟搜索?

javascript - 替换 typescript 中字符串中的所有字符实例?

SQL 将 č、ć、ž 替换为字母 c、z

jquery - 在变量上使用正则表达式?

java - 通过 for 循环在 MapReduce 中发出中间键 - 我是否误解了 MapReduce?包括基本示例。

java - 想要在 fragment 中使用回收器 View 。当我设置适配器时创建了一个适配器,它显示错误

Python:将 list.index 与正则表达式一起使用

search - 如何在Marklogic中搜索除一个目录之外的所有目录中的记录