Je veux supprimer tous les caractères spéciaux, sauf l'espace, d'une chaîne de caractères en utilisant JavaScript.
Par exemple, abc's test#s
devrait donner comme résultat abcs tests
.
Je veux supprimer tous les caractères spéciaux, sauf l'espace, d'une chaîne de caractères en utilisant JavaScript.
Par exemple, abc's test#s
devrait donner comme résultat abcs tests
.
La première solution ne fonctionne pour aucun alphabet UTF-8. (Elle coupera le texte tel que Привіт). J'ai réussi à créer une fonction qui n'utilise pas RegExp et qui utilise un bon support UTF-8 dans le moteur JavaScript. L'idée est simple si un symbole est égal en majuscule et en minuscule c'est un caractère spécial. La seule exception est faite pour les espaces blancs.
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
Mise à jour : Veuillez noter que cette solution ne fonctionne que pour les langues où il y a des lettres minuscules et majuscules. Dans des langues comme le chinois, cela ne fonctionnera pas.
Mise à jour 2 : Je suis arrivé à la solution originale lorsque je travaillais sur une recherche floue. Si vous essayez également de supprimer les caractères spéciaux pour mettre en œuvre une fonctionnalité de recherche, il existe une meilleure approche. Utilisez n'importe quel bibliothèque de translittération qui vous produira une chaîne de caractères uniquement à partir de caractères latins et ensuite la simple Regexp fera toute la magie de la suppression des caractères spéciaux. (Cela fonctionnera également pour le chinois et vous obtiendrez également des avantages secondaires en faisant de la Tromsø
== Tromso
).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.