2017-06-26 2 views
0

J'essaie de supprimer des caractères spéciaux de la chaîne mais le point est "?" toujours sur la chaîne de sortie tandis que les autres ont été supprimés correctement.Pourquoi mon remplacement ne fonctionne-t-il pas?

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

ceci est ma chaîne

https://file.io/JjiLhD

+0

en double de [ce] (https://stackoverflow.com/questions/13696461/replace-special-character-with-an-escape-preceded- spécial-character-in-java) SO question. –

+0

Copie possible de [Remplacer le caractère spécial par un échappement précédé d'un caractère spécial en Java] (https://stackoverflow.com/questions/13696461/replace-special-character-with-an-escape-preceded-special-character-in- java) –

+0

Je sais qu'il est en double je sais comment remplacer le travail mais je veux juste savoir pourquoi le point d'interrogation apparaît toujours sur mon texte pourquoi les autres ont été remplacés correctement –

Répondre

4

Vous devez utiliser replace au lieu de replaceAll car replaceAll utilise l'entrée regex

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

replace est même fonction avec replaceAll mais entrée différente

Remplace chaque sous-chaîne de cette chaîne qui correspond à la séquence littérale cible avec la séquence de remplacement littérale spécifiée.

+0

merci pour la réponse mais quand j'utilise remplacer il fera 1 fois mais remplacerAll remplacer tout mon contexte il y a encore "?" apparaît :( –

+1

Non, 'remplacer 'a remplacé toute tâche, vous pouvez l'essayer, c'est le problème de nommage java, vous pouvez lire javadoc à ce sujet – Jerry06

0

Essayez pour alphanumeric caractères.

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

et seulement alphabetical caractères,

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