Comment supprimer des espaces dans une chaîne? Par exemple:
Contribution:
'/var/www/site/Brand new document.docx'
Production:
'/var/www/site/Brandnewdocument.docx'
javascript
text
JLuiz
la source
la source
" ahm ed ".split('').filter(e => e.trim().length).join('')
Réponses:
Cette?
Exemple
Mise à jour: Sur la base de cette question , ceci:
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" etg
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.
la source
.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 ...Deux façons de procéder!
la source
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)):
Cordes COURTES
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. Lasplit-join
solution la plus lente pour tous les navigateurs . Changementà
\s
ou ajouter+
oui
à RegExp ralentit le traitement.LONGES cordes
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
la source
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 textetextDomNode.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, '')
la source
way faster
. a exécuté le test et il est seulement 2,19% plus rapide, sur mon Firefox 61.Cliquez ici pour un exemple de travail
la source
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 .
la source
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.
L'utilisation de Split + Join permet une manipulation enchaînée de la chaîne.
la source