Программное обеспечение Java Editor - PullRequest
0 голосов
/ 04 апреля 2019

Я создаю редактор с использованием java, в котором моя опция поиска и замены не работает, пока я заменяю c ++ на java, после чего после замены моего кода на 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();
    }

}

Я знаю, что это неправильный способ задавать вопросы, но мой код очень большой.
Может кто-нибудь объяснить, почему этопроисходит?

1 Ответ

1 голос
/ 04 апреля 2019

This ...

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

... использует текст, введенный в tf2, является регулярным выражением для сопоставления.Символ + является одним из нескольких, которые имеют особое значение в регулярных выражениях.Если вы хотите обрабатывать пользовательский ввод как буквальный текст, независимо от того, какие символы он содержит, вам нужно заключить его в кавычки или иным образом указать это.Например,

        p = Pattern.compile(Pattern.quote(tf2.getText()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...