¿Можно ли заменить всю работу на *,$,%? если нет, то какую другую альтернативу для замены я могу использовать?

#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. Или просто будьте готовы немного поэкспериментировать.