Избегайте специальных символов, таких как + в Java - PullRequest
0 голосов
/ 09 марта 2020

Я хочу экранировать все специальные символы в строке.

Входная строка: Foo+Bar

Выходная строка: Foo\+Bar

Таким образом, + следует экранировать до \+. Это необходимо, поскольку я должен передать полученную строку в Postgres SQL в качестве шаблона регулярного выражения, поэтому, если я передаю только +, это вызывает исключение.

Я пытался использовать apache -commons: commons-text , но это не выходит за пределы + в String

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Есть способ сделать это простым Java. Используйте Pattern # quote (String) для экранирования всех символов, связанных с регулярными выражениями.

0 голосов
/ 09 марта 2020

Если вы измените настроенный шаблон, special ниже, это может сделать то, что вы хотите.

        String special = "([\\[\\]()+*.])";
        String str = "This is (a test) of [how to ] escape things like +, *, and .";
        str = str.replaceAll(special, "\\\\$1");
        System.out.println(str);
  • $1 - это обратная ссылка на соответствующий специальный символ.
  • * * * * * * * * * * * * * * * * * * * * * * * * * \\\\ требуется, чтобы избежать выхода, чтобы в подстановке появился sla sh.
...