/ / Dlaczego moja zamiana nie działa - java, łańcuch, znaki specjalne, replaceall

Dlaczego mój replaceAll nie działa - java, string, znaki specjalne, zamiennik

Próbuję usunąć znaki specjalne z łańcucha, ale chodzi tylko o „?” nadal na łańcuchu wyjściowym, podczas gdy pozostałe zostały poprawnie usunięte.

String[] special = {"\*",";","_","=", "\[", "\]", ":", "\?", "-", "\.",
"\)", "\(", "/", "!", "#", ",", """, "“", "”"};
for (int i = 0; i < special.length; i++) {
source = source.replaceAll(special[i], "");
}

to jest mój ciąg

https://file.io/JjiLhD

Odpowiedzi:

4 dla odpowiedzi № 1

Powinieneś użyć replace zamiast replaceAll bo replaceAll używa wyrażenia wejściowego

for (int i = 0; i < special.length; i++) {
source = source.replace(special[i], "");
}

replace ma taką samą funkcję replaceAll ale inne wejście

Zastępuje każdy podciąg tego łańcucha, który pasuje do dosłownego celu sekwencja z określoną literalną sekwencją zastępczą.


0 dla odpowiedzi nr 2

Spróbuj tego alphanumeric postacie.

.replaceAll("[^a-zA-Z0-9]", ""));

i tylko alphabetical postacie,

.replaceAll("[^a-zA-Z]", ""));