Cela dépend de ce que vous voulez dire. Si vous voulez juste vous en débarrasser, faites ceci: (Mise à jour: Apparemment, vous voulez aussi garder les chiffres, utilisez les secondes lignes dans ce cas)
lorsque j'utilise cette fonction, il supprime également tous les numéros.Mais je ne veux pas que les numéros soient supprimés.Je veux simplement supprimer les caractères spéciaux.Veuillez suggérer quelque chose ..
Tanu
eh bien tu as dit que tu voulais seulement l'alphabet. Mais je vais mettre à jour ma réponse dans une minute
Sean Patrick Floyd
Je veux concaténer une chaîne mais avec une condition comme 1.S'il n'y a qu'un seul résultat, aucune concaténation requise 2.Si le résultat est supérieur à 1, la chaîne concatée dans l'exemple de forme suivant: stack + over + flow
Tanu
2
@Tanu, c'est une question différente. Faites-en un nouveau
Pekka
Que faire si je ne veux pas que les espaces soient supprimés? ou dire tous les espaces comme les tabulations, les retours à la ligne réduits comme un seul espace?
damné
74
J'utilise ceci.
s = s.replaceAll("\\W","");
Il remplace tous les caractères spéciaux de la chaîne.
Ici
\ w: un caractère de mot, abréviation de [a-zA-Z_0-9]
Ici, tous les caractères spéciaux sauf l'espace, la virgule et l'esperluette sont remplacés. Vous pouvez également omettre l'espace, la virgule et l'esperluette à l'aide de l'expression régulière suivante.
En suivant l'exemple de la réponse d'Andrzej Doyle , je pense que la meilleure solution est d'utiliser org.apache.commons.lang3.StringUtils.stripAccents():
package bla.bla.utility;import org.apache.commons.lang3.StringUtils;publicclassUriUtility{publicstaticString normalizeUri(String s){String r =StringUtils.stripAccents(s);
r = r.replace(" ","_");
r = r.replaceAll("[^\\.A-Za-z0-9_]","");return r;}}
Vous pouvez utiliser des expressions régulières de base sur des chaînes pour rechercher tous les caractères spéciaux ou utiliser des classes de modèle et de correspondance pour rechercher / modifier / supprimer des chaînes définies par l'utilisateur. Ce lien contient quelques exemples simples et faciles à comprendre d'expressions régulières: http://www.vogella.de/articles/JavaRegularExpressions/article.html
Vous pouvez obtenir unicode pour ce caractère indésirable à partir de l'outil de mappage de caractères dans Windows PC et ajouter \ u par exemple \ u00a9 pour le symbole de copyright. Vous pouvez maintenant utiliser cette chaîne avec ce caractère indésirable particulier, ne supprimez aucun caractère indésirable, mais remplacez-le par le bon Unicode.
Réponses:
Cela dépend de ce que vous voulez dire. Si vous voulez juste vous en débarrasser, faites ceci:
(Mise à jour: Apparemment, vous voulez aussi garder les chiffres, utilisez les secondes lignes dans ce cas)
ou l'équivalent:
(Tous ces éléments peuvent être considérablement améliorés en précompilant le modèle de regex et en le stockant dans une constante)
Ou, avec Guava :
Mais si vous voulez transformer des caractères accentués en quelque chose de sensé qui reste ascii, regardez ces questions:
la source
J'utilise ceci.
Il remplace tous les caractères spéciaux de la chaîne.
Ici
\ w: un caractère de mot, abréviation de [a-zA-Z_0-9]
\ W: un caractère autre qu'un mot
la source
Vous pouvez utiliser la méthode suivante pour conserver les caractères alphanumériques.
Et si vous souhaitez ne conserver que les caractères alphabétiques, utilisez ceci
la source
replaceAll("[^a-zA-Z0-9 ]", "");
Remplacez tous les caractères spéciaux par
ex: pour remplacer toutes les occurrences de * par un espace blanc
* cette instruction ne peut remplacer qu'un seul type de caractère spécial à la fois
la source
Ici, tous les caractères spéciaux sauf l'espace, la virgule et l'esperluette sont remplacés. Vous pouvez également omettre l'espace, la virgule et l'esperluette à l'aide de l'expression régulière suivante.
Où Input est la chaîne dont nous avons besoin pour remplacer les caractères.
la source
En suivant l'exemple de la réponse d'Andrzej Doyle , je pense que la meilleure solution est d'utiliser
org.apache.commons.lang3.StringUtils.stripAccents()
:la source
Vous pouvez utiliser des expressions régulières de base sur des chaînes pour rechercher tous les caractères spéciaux ou utiliser des classes de modèle et de correspondance pour rechercher / modifier / supprimer des chaînes définies par l'utilisateur. Ce lien contient quelques exemples simples et faciles à comprendre d'expressions régulières: http://www.vogella.de/articles/JavaRegularExpressions/article.html
la source
Vous pouvez obtenir unicode pour ce caractère indésirable à partir de l'outil de mappage de caractères dans Windows PC et ajouter \ u par exemple \ u00a9 pour le symbole de copyright. Vous pouvez maintenant utiliser cette chaîne avec ce caractère indésirable particulier, ne supprimez aucun caractère indésirable, mais remplacez-le par le bon Unicode.
la source
Pour les espaces, utilisez "[^ az AZ 0-9]" ce modèle
la source