2014-04-22 11 views
0

Salut, je voudrais remplacer un caractère dans une chaîne. Mon problème est qu'au début vous ne savez pas quel est le char, donc dans certains cas, je reçois un message d'erreur quand mon char est par exemple '+'. Je ne veux pas que mon personnage soit interprété comme regex, alors que dois-je faire?remplacer un caractère dans la chaîne

mai code devrait être quelque chose comme ceci:

String test = "something"; 
char ca = input.chatAt(0); 
input = input.replaceAll("" + ca, ""); 

J'espère que vous pouvez me aider.

+0

que voulez-vous? – aelor

+0

Et si vous souhaitez remplacer une chaîne littérale par une autre chaîne littérale, utilisez 'String.replace (from, to)'. Lire le javadoc est tout ce que vous avez à faire pour trouver ces solutions faciles. –

+0

Mon code fonctionne parfaitement avec tous les caractères qui ne sont PAS '+', '*', '?', ... mais cela devrait aussi être possible avec ces caractères. – user3025417

Répondre

2

N'utilisez pas alors regex.

input = input.replace(String.valueOf(ca), ""); 

Procédé replaceAll de String prend la représentation String d'une expression régulière comme argument. La méthode replace ne fonctionne pas.

Voir API.

0

En fait remplacer méthode est potentiellement ambigu, dans le cas où vous remplacez, disons "zz" -> "xy" dans la chaîne "zzz" (résultat serait "xyz" et non "zxy").

À son tour, remplacerTous est plus flexible et son comportement est strictement déterminé. Inutile de dire, qu'il est plus cher, que remplacer.

Certainement, dans votre cas remplacer est le meilleur choix.

0

Vous pouvez utiliser la fonction remplacer (Char oldChar, Char newChar) dans la classe String ou utilisez la fonction ci-dessous:

String replaceChar(String input, char oldChar, char newChar){ 
    StringBuffer sb = new StringBuffer();  
    for(int i = 0; i<input.length(); i++){ 
     char c = input.charAt(i); 
     if(c == oldChar) 
      sb.append(newChar); 
     else 
      sb.append(c); 
    } 
    return sb.toString(); 
} 
Questions connexes