首页 > 解决方案 > Java 编辑器软件

问题描述

我正在使用 java 创建一个编辑器,其中我的查找和替换选项在我用 java 替换 c++ 时失败,然后在替换我的代码后显示 java++ 它不会完全替换 ++ 到文本文件中。

所以这是我在代码中使用 patcher 和 matcher 创建的查找方法

public void findingValue1() {

    p = Pattern.compile(p.quote(tf1.getText()));
    m = p.matcher(tavalue);

    if (m.find(x)) {
        y = 0;
        char ch[] = tavalue.toCharArray();
        for (int i = 0; i < m.start(); i++)
            if (ch[i] == '\n')
                y++;
        ta.select(m.start() - y, m.end() - y);
        r1 = m.start() - y;
        r2 = m.end() - y;
        x = m.end();
        user = true;
    } else
        cannotFound();
    f1.toFront();
}

public void findingValue2() {
    try {
        s1 = ta.getText();
        s1 = s1.replaceAll("\r", "");
        ta.setText(s1);
        ta.setCaretPosition(pos);
        p = Pattern.compile(tf2.getText());
        m = p.matcher(s1);
        if (m.find(pos)) {
            ta.requestFocus();
            ta.select(m.start(), m.end());
            String str1, str2;
            str1 = tf3.getText();
            str2 = tf2.getText();
            if (str1.length() > str2.length())
                pos = m.end() + 1;
            else
                pos = m.start() + 1;
        } else
            cannotFound();

    } catch (Exception ex) {
        cannotFound();
    }

}

我知道这不是提问的正确方式,但我的代码非常庞大。
谁能解释为什么会这样?

标签: javaawt

解决方案


这个 ...

        p=Pattern.compile(tf2.getText());

... 使用输入的文本tf2正则表达式来匹配。该+字符是正则表达式中具有特殊含义的几个字符之一。如果您想将用户输入视为文字文本,无论它包含什么字符,那么您需要引用它或以其他方式表示。例如,

        p = Pattern.compile(Pattern.quote(tf2.getText()));

推荐阅读