Réponses:
Cette?
str = str.replace(/\s/g, '');
Exemple
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Mise à jour: Sur la base de cette question , ceci:
str = str.replace(/\s+/g, '');
est une meilleure solution. Il produit le même résultat, mais il le fait plus rapidement.
The Regex
\s
est l'expression régulière de "l'espace blanc" et g
est le drapeau "global", ce qui signifie correspondre à TOUS\s
(espaces blancs).
Une grande explication pour +
peut être trouvée ici .
En remarque, vous pouvez remplacer le contenu entre les guillemets simples par tout ce que vous voulez, vous pouvez donc remplacer les espaces par n'importe quelle autre chaîne.
.replace(/\s+/g, '')
plus souvent. Y a-t-il une différence entre cela et ma réponse?
.replace(' ','')
marcherait. Très appréciée!
+
n'a que 60 votes si quelqu'un veut le créditer aussi stackoverflow.com/a/5964427/4258817
.replace('/\s+/g', '')
car elle essaiera de trouver cette chaîne littérale. Cela m'a fait trébucher avant ...
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 procéder!
PLUS COURT ET PLUS RAPIDE :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 / sec), Safari 10.1M, Firefox 8.8M. La split-join
solution la plus lente pour tous les navigateurs . Changement à
\s
ou ajouter +
ou i
à RegExp ralentit le traitement.
Pour une chaîne, environ 3 millions de résultats de caractères sont:
Vous pouvez l'exécuter sur votre machine: https://jsperf.com/remove-string-spaces/1
Suite à la réponse de @rsplak: en fait, l'utilisation de la méthode split / join est plus rapide que l'utilisation de regexp. Voir le cas de test de performance
Donc
var result = text.split(' ').join('')
fonctionne plus vite que
var result = text.replace(/\s+/g, '')
Sur les petits textes, cela n'est pas pertinent, mais pour les cas où le temps est important, par exemple dans les analyseurs de texte, en particulier lors de l'interaction avec les utilisateurs, cela est important.
D'autre part, \s+
gère une plus grande variété de caractères d'espace. Parmi avec \n
et \t
, il correspond également au \u00a0
caractère, et c'est ce qui
est activé lors de l'utilisation du texte textDomNode.nodeValue
.
Je pense donc que la conclusion ici peut être tirée comme suit: si vous avez seulement besoin de remplacer des espaces ' '
, utilisez split / join. S'il peut y avoir différents symboles de la classe de symboles - utilisezreplace(/\s+/g, '')
way faster
. a exécuté le test et il est seulement 2,19% plus rapide, sur mon Firefox 61.
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 ignore la sensibilité à la casse.
pour référence, cliquez ici .
Regex + Replace ()
Bien que l'expression régulière puisse être plus lente, dans de nombreux cas d'utilisation, le développeur ne manipule que quelques chaînes à la fois, donc la vitesse n'est pas pertinente. Même si / / est plus rapide que / \ s /, avoir le '\ s' explique ce qui se passe chez un autre développeur peut-être plus clairement.
let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
Fractionner () + Rejoindre ()
L'utilisation de Split + Join permet une manipulation enchaînée de la chaîne.
let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
" ahm ed ".split('').filter(e => e.trim().length).join('')