Почему строка ": n" считается такой же, как и ".n" методом replaceAll () в Java? - PullRequest
1 голос
/ 10 января 2020

Почему :0 заменяется, когда утверждение для .0?

Я пробовал это с :x & .x и на моем Intellij, а также онлайн-компиляторе gdb, но эта проблема сохраняется.

public class Main
{
    public static void main(String[] args) 
    {
        String s = "Hello:0, World:0.0, het:0";    
        System.out.println(s);

        s = s.replaceAll(".0,", ",");
        System.out.println(s);
    }
}

Вывод:

Hello:0, World:0.0, het:0
Hello, World:0, het:0

1 Ответ

13 голосов
/ 10 января 2020

. означает «любой символ», поскольку replaceAll использует регулярные выражения .

Используйте взамен replace, если вы хотите заменить буквальную строку:

s = s.replace(".0,", ",");

Кроме того, вы можете выйти из ., либо с префиксом \, либо с помощью метода Pattern.quote:

s = s.replaceAll("\\.0,", ",");
s = s.replaceAll(Pattern.quote(".0,"), ",");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...