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.
