tekst - Hvordan fjerne mellomrom fra en streng ved hjelp av JavaScript?


Hvordan fjerner man mellomrom i en streng? For eksempel:

Inndata:

'/var/www/site/Brand new document.docx'

Utdata:

'/var/www/site/Brandnewdocument.docx'

Svar #1

Dette?

str = str.replace(/\s/g, '');

Eksempel

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );

Oppdatering: Basert på dette spørsmålet, dette:

str = str.replace(/\s+/g, '');

er en bedre løsning. Det gir samme resultat, men gjør det raskere.

Regexen

\s er regexen for "mellomrom", og g er "global" flagget, som betyr å matche ALLE \s (mellomrom).

En flott forklaring på + kan finnes her.

Som en tilleggsmerknad, kan du erstatte innholdet mellom enkeltsitatene med hva som helst du vil, så du kan erstatte mellomrom med hvilken som helst annen streng.

Svar #2

KORTESTE og RASKESTE: str.replace(/ /g, '');


Benchmark:

Her er mine resultater - (2018.07.13) MacOs High Sierra 10.13.3 på Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit) ):

KORTE strenger

Kort streng som ligner eksemplene fra OP-spørsmålet

Den raskeste løsningen på alle nettlesere er / /g (regexp1a) - Chrome 17,7M (operasjoner/sek), Safari 10,1M, Firefox 8,8M. Den tregeste for alle nettlesere var split-join-løsningen. Å endre til \s eller legge til + eller i i regexp gjør behandlingen tregere.

LANGE strenger

For streng på omtrent ~3 millioner tegn er resultatene:

  • regexp1a: Safari 50,14 ops/sek, 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,

Du kan kjøre det på maskinen din: https://jsperf.com/remove-string-spaces/1

Svar #3

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

To måter å gjøre dette på!

Svar #4

Følger @rsplak sitt svar: faktisk, å bruke split/join-metoden er raskere enn å bruke regexp. Se ytelsestesttilfellet

Så

var result = text.split(' ').join('')

opererer raskere enn

var result = text.replace(/\s+/g, '')

På små tekster er dette ikke relevant, men for tilfeller når tid er viktig, f.eks. i tekstanalyseverktøy, spesielt når man samhandler med brukere, er det viktig.

På den annen side håndterer \s+ et bredere utvalg av mellomromstegn. Sammen med \n og \t, matcher det også \u00a0-tegnet, og det er det   blir til når man henter tekst ved å bruke textDomNode.nodeValue.

Så jeg tror at konklusjonen her kan trekkes som følger: hvis du bare trenger å erstatte mellomrom ' ', bruk split/join. Hvis det kan være forskjellige symboler av symbols klasse - bruk replace(/\s+/g, '')

Svar #5

enkel måte

someString.replace(/ /g, '');
// or
someString.replace(/\s/gm, '');

Svar #6

var input = '/var/www/site/Brand new document.docx';

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

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

alert(input);

Klikk her for et fungerende eksempel

Svar #7

Uten regexp fungerer det fint for bare én forekomst.

input = input.replace(' ', '');

Dette er raskere som enkelt! Kan hjelpe noen av dere i noen tilfeller.

Relaterte artikler