#java #regex #pattern-matching
#java #регулярное выражение #сопоставление с шаблоном
Вопрос:
Я пытаюсь заменить текст специальными символами (которые требуют, чтобы я использовал Pattern.quote их) на версию этого текста в нижнем регистре, но функция Pattern.quote иногда добавляет Q и E в начало и конец текста, поэтому метод replace его не находит. Код, который я использую, является:
bigText = bigText.replaceFirst(Pattern.quote(text),text.toLowerCase());
Есть ли способ потерять эти символы?
Комментарии:
1. Не могли бы вы привести пример
text
и что бы вы хотели с ним сопоставить?
Ответ №1:
Добавление Q
и E
— это именно то, что Pattern.quote()
делает! Почему вы этого не хотите?
Если вам нужно заключить в кавычки только некоторые символы этой строки, то вы должны сделать это вручную.
Комментарии:
1. Если это так, его нельзя заменить, как я хотел. Также — почему иногда это работает (то есть не добавляет эти символы)?
2. Чтение исходного кода OpenJDK 1.6 показывает только один случай, когда они не добавлены, и это если входные данные являются
null
(в этом случае будет выдан NPE). И, насколько я знаю, именно так это всегда работало.3. Да, я провел некоторое исследование, и в этом вы правы. Думаю, мне следует глубже изучить свой код, чтобы понять, почему он не заменен…