Comment supprimer des espaces dans une chaîne? Par exemple:
Entrée:
'/var/www/site/Brand new document.docx'
Sortie:
'/var/www/site/Brandnewdocument.docx'
Cette?
str = str.replace(/\s/g, '');
Exemple
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Mise à jour: Basé sur cette question , ceci:
str = str.replace(/\s+/g, '');
est une meilleure solution. Il produit le même résultat, mais le fait plus rapidement.
Le regex
\s
est l'expression régulière de "l'espace" et g
est l'indicateur "global", ce qui signifie que ALL \s
(espaces).
Une bonne explication pour +
peut être trouvée ici .
En guise de remarque, vous pouvez remplacer le contenu entre guillemets simples par tout ce que vous voulez, afin de remplacer les espaces blancs par une autre chaîne.
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
Deux façons de faire ça!
Suite à la réponse @rsplak: en fait, utiliser le mode scission/join est plus rapide que l’utilisation de regexp Voir la performance test case
Alors
var result = text.split(' ').join('')
fonctionne plus vite que
var result = text.replace(/\s+/g, '')
Sur de petits textes, cela n’est pas pertinent, mais dans les cas où le temps est important, par exemple: dans les analyseurs de texte, en particulier lors des interactions avec les utilisateurs, cela est important.
Par ailleurs, _\s+
_ gère une plus grande variété de caractères d'espacement. Parmi avec _\n
_ et _\t
_, il correspond également au caractère _\u00a0
_, et c’est ce que _
_ est restitué lors de l’obtention de texte utilisant _textDomNode.nodeValue
_.
Donc, je pense que la conclusion ici peut être faite comme suit: si vous devez seulement remplacer des espaces _' '
_, utilisez split/join. S'il peut y avoir différents symboles de classe de symboles - utilisez replace(/\s+/g, '')
SHORTEST et FASTEST : str.replace(/ /g, '');
Référence:
Voici mes résultats 2018.07.13) MacOs High Sierra 10.13.3 sur Chrome 67.0.3396 (64 bits), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64 bits) )):
Chaîne courte similaire aux exemples de la question OP
--- (
La solution la plus rapide sur tous les navigateurs est / /g
(regexp1a) - Chrome 17,7M (opération/s), Safari 10.1M, Firefox 8.8M. Le plus lent des navigateurs était split-join
solution. Passez à \s
ou ajoutez +
ou i
à l'expression rationnelle ralentit le traitement.
Pour une chaîne d'environ 3 millions de caractères, les résultats sont les suivants:
Vous pouvez l'exécuter sur votre machine: https://jsperf.com/remove-string-spaces/1
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
or
var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");
Remarque: Bien que vous utilisiez 'g' ou 'gi' pour supprimer des espaces, les deux se comportent de la même manière.
Si nous utilisons 'g' dans la fonction de remplacement, il vérifiera la correspondance exacte. mais si nous utilisons 'gi', il ne tient pas compte de la sensibilité à la casse.
pour référence cliquez ici .