/ / String.replaceAll ne s'applique à aucun type de caractères [dupliquer] - java, chaîne, replaceall

String.replaceAll ne s'applique à aucun type de caractères [dupliquer] - java, chaîne, replaceall

Donc, ce que j’ai obtenu est cette méthode simple qui devrait supprimer tous les caractères sauf les lettres majuscules et minuscules et les chiffres d’une chaîne.

public static String toSimple(String arg) //redurziert einen String auf Buchstaben und ganze Zahlen
{
String string = arg;
int i = 0;
while ( i < string.length())
{
if (((int)string.charAt(i) >= 48 && (int)string.charAt(i) <= 57)||((int)string.charAt(i) >= 65 && (int)string.charAt(i) <= 90)||((int)string.charAt(i) >= 97 && (int)string.charAt(i) <= 121))
i+=1;
else
{
int a = string.length();
string = string.replaceAll(""+string.charAt(i), "");

if (!(string.length() < a)) //Just in case
{
i+=1;
}
}

Le problème est que dans certains cas string.replaceAll ne changera rien si atteint et donné unpersonnage. Je l’ai vérifiée dans le débogueur et je n’ai trouvé aucune erreur ou exception apparente. Je n’ai pas vérifié la totalité de la table ASCII, je sais que le problème se produira pour "$" "?" et ".". Des suggestions comment résoudre cela?

Réponses:

2 pour la réponse № 1

String.replaceAll prend une expression régulière comme premier paramètre.

$, ? et . sont des caractères spéciaux dans expressions régulières.

Utilisation String.replace à la place, cela utilise en fait des expressions régulières en interne, mais échappe correctement aux chaînes.


Cependant, étant donné que vous utilisez " String.replaceAll, vous pouvez simplement utiliser une expression régulière pour faire le tout:

return arg.replaceAll("[^A-Za-z0-9]", "");