#java #string #special-characters #replaceall
Вопрос:
Итак, я пытаюсь создать этот код, в котором, если я обнаружу один из этих символов (* ! O X%$# amp;), этот конкретный символ будет удален из строки. Однако я получаю это сообщение об ошибке
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*
Я считаю, что это связано с тем, что функция replaceAll не может распознать эти символы. Если да, может ли кто-нибудь сказать мне, пожалуйста, другой способ сделать то, что я пытаюсь сделать.
(Я должен проверить, находится ли каждый символ в определенной строке отдельно, один за другим)
Комментарии:
1.
myvariable.replaceAll("[\*OX%$# amp;]", "");
. Звездочка (*) должна быть экранирована в вашем регулярном выражении (регулярном выражении).
Ответ №1:
Да, replaceAll
может работать с любым из этих символов, но аргумент to replaceAll
является регулярным выражением. Это означает, что символы, которые имеют особое значение в регулярном выражении, должны быть «экранированы», предваряя их обратной косой чертой. Затем, конечно, эту обратную косую черту необходимо экранировать из компилятора, предваряя ее второй обратной косой чертой. Так что в конечном итоге вы будете писать такие вещи, как
replacedString = myString.replaceAll("\ ", "PLUS");
Чтобы узнать, какие символы необходимо заменить, посмотрите на Javadoc для класса Pattern. Или просто будьте готовы немного поэкспериментировать.