web-dev-qa-db-fra.com

Comment supprimer des espaces d'une chaîne en utilisant JavaScript?

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'
480
JLuiz

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.

1035
Šime Vidas
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!

57
rsplak

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, '')

19
Minstel

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) )):

Cordes courtes

Chaîne courte similaire aux exemples de la question OP

--- (enter image description here

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.

Longues cordes

Pour une chaîne d'environ 3 millions de caractères, les résultats sont les suivants:

  • regexp1a : Safari 50.14 ops/sec, Firefox 18.57, Chrome 8.95
  • regexp2b : Safari 38.39, Firefox 19.45, Chrome 9.26
  • split-join : Firefox 26.41, Safari 23.10, Chrome 7.98,

Vous pouvez l'exécuter sur votre machine: https://jsperf.com/remove-string-spaces/1

12
Kamil Kiełczewski
var input = '/var/www/site/Brand new document.docx';

//remove space
input = input.replace(/\s/g, '');

//make string lower
input = input.toLowerCase();

alert(input);

Cliquez ici pour un exemple de travail

8
Muhammad Tahir
  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 .

2
Raveendra007