Risposte:
Questo?
str = str.replace(/\s/g, '');
Esempio
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Aggiornamento: in base a questa domanda , questo:
str = str.replace(/\s+/g, '');
è una soluzione migliore. Produce lo stesso risultato, ma lo fa più velocemente.
The Regex
\s
è la regex per "spazi bianchi", ed g
è la bandiera "globale", che corrisponde a ALL \s
(spazi bianchi).
Una grande spiegazione per +
può essere trovata qui .
Come nota a margine, è possibile sostituire il contenuto tra virgolette singole con tutto ciò che si desidera, quindi è possibile sostituire gli spazi bianchi con qualsiasi altra stringa.
.replace(/\s+/g, '')
più spesso. C'è una differenza tra questa e la mia risposta?
.replace(' ','')
avrebbe funzionato. Molto apprezzato!
+
ha solo 60 voti se qualcuno vuole accreditare lui / lei troppo stackoverflow.com/a/5964427/4258817
.replace('/\s+/g', '')
perché cercherà di trovare quella stringa letterale. Questo mi ha inciampato prima ...
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
Due modi per farlo!
PIÙ BREVE E PIÙ VELOCE :str.replace(/ /g, '');
Prova delle prestazioni:
Ecco i miei risultati - (2018.07.13) MacOs High Sierra 10.13.3 su Chrome 67.0.3396 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit)):
Breve stringa simile agli esempi della domanda OP
La soluzione più veloce su tutti i browser è / /g
(regexp1a) - Chrome 17.7M (operazione / sec), Safari 10.1M, Firefox 8.8M. Il più lento per tutti i browser era la split-join
soluzione. Passare a
\s
o aggiungere +
o i
regexp rallenta l'elaborazione.
Per una stringa di circa 3 milioni di caratteri i risultati sono:
Puoi eseguirlo sul tuo computer: https://jsperf.com/remove-string-spaces/1
A seguito della risposta di @rsplak: in realtà, l'uso del modo split / join è più veloce dell'uso di regexp. Vedi il caso del test delle prestazioni
Così
var result = text.split(' ').join('')
funziona più velocemente di
var result = text.replace(/\s+/g, '')
Nei testi di piccole dimensioni ciò non è rilevante, ma per i casi in cui il tempo è importante, ad esempio negli analisti di testi, in particolare quando interagiscono con gli utenti, ciò è importante.
D'altra parte, \s+
gestisce una più ampia varietà di caratteri spaziali. Oltre a \n
e \t
, corrisponde anche al \u00a0
carattere, e questo è ciò che
viene restituito, quando si ottiene il testo utilizzando textDomNode.nodeValue
.
Quindi penso che la conclusione qui può essere fatta come segue: se hai solo bisogno di sostituire gli spazi ' '
, usa split / join. Se possono esserci diversi simboli della classe di simboli , utilizzarereplace(/\s+/g, '')
way faster
. ha eseguito il test ed è solo il 2,19% più veloce, sul mio 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,"");
Nota: sebbene si usi 'g' o 'gi' per rimuovere gli spazi, entrambi si comportano allo stesso modo.
Se usiamo 'g' nella funzione di sostituzione, controllerà la corrispondenza esatta. ma se usiamo "gi", ignora la distinzione tra maiuscole e minuscole.
per riferimento clicca qui .
Regex + Sostituisci ()
Sebbene regex possa essere più lento, in molti casi d'uso lo sviluppatore sta manipolando solo poche stringhe alla volta, quindi la velocità è irrilevante. Anche se / / è più veloce di / \ s /, avere '\ s' spiega cosa sta succedendo a un altro sviluppatore forse più chiaramente.
let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
Dividi () + Partecipa ()
L'uso di Split + Join consente un'ulteriore manipolazione concatenata della stringa.
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('')