2011-10-03 20 views
21

Come posso rimuovere tutto lo spazio extra tra le parole in una stringa letterale?Javascript - Come rimuovere tutta la spaziatura tra le parole

"some value" 

dovrebbe diventare

"some value" 

Inoltre,

" This should become something   else too . " 

Diventa

"This should become something else too ." 

Non preoccuparti per spostare la .. Proprio come sopra va bene. So che posso usare $.trim(str) per ottenere la rimozione dello spazio finale/finale. Ma, non sono sicuro di come fare l'1 spazio tra le parole trucco.

+0

regex per il salvataggio ....! – Kasturi

+0

hai provato a google "rimuovere tutte le spaziature extra tra le parole javascript"? Il terzo link è quello che stai cercando http://lawrence.ecorp.net/inet/samples/regexp-format.php –

+0

@Massimiliano Peluso - Sì, è così che ho trovato '$ .trim()'. Inoltre, imparo molto più da SO che da un motore di ricerca. –

risposta

41
var string = " This should become something   else too . "; 
string = string.replace(/\s+/g, " "); 

Questo codice sostituisce una serie consecutiva di caratteri di spaziatura (\s+) da un singolo spazio bianco. Si noti che un carattere spazio bianco include anche tabulazioni e ritorni a capo. Sostituire \s con uno spazio se si desidera solo sostituire gli spazi.

Se anche voi volete rimuovere la spazi bianchi all'inizio e alla fine, includono:

string = string.replace(/^\s+|\s+$/g, ""); 

Questa linea rimuove tutti i caratteri di spazio bianco all'inizio (^) e la fine ($). Lo g alla fine di RegExp significa: globale, cioè corrisponde e sostituisce tutte le occorrenze.

+0

Questa soluzione è ottima perché pulisce alcuni caratteri sporchi a cui non avevo nemmeno pensato. –

+0

var newString = string.replace (/^\ s + | \ s + $/g, "") .replace (/ \ s +/g, ""); – RTF

11
var str = " This should become something   else too . "; 
str = str.replace(/ +(?=)/g,''); 

Ecco a working fiddle.

+3

Una piccola spiegazione sulla regex utilizzata sarebbe bella! –

+0

Perché un registro così complicato, quando tutto ciò che serve è '\ s +'? E [perché i lookahead non sono buoni] (http://stackoverflow.com/questions/1843459/javascript-the-good-parts-why-is-lookahead-not-good). – epascarello

+1

significa che stai sostituendo uno o più caratteri di spazio '/ +' - che precedono uno spazio '(? =)' Su tutta la stringa '/ g' con niente', '' '. Puoi leggere ulteriori informazioni a riguardo [qui] (http://www.w3schools.com/jsref/jsref_regexp_nfollow.asp) – mogoman

0

Un altro (forse più facile da capire) la sostituzione regexp che farà il trucco:

var input = /* whatever */; 
input = input.replace(/ +/g, ' '); 

Anche l'espressione regolare corrisponde a uno o più spazi, quindi la chiamata .replace() sostituisce ogni spazio singolo o ripetuto con un singolo spazio.

0
var str = 'some value'; 
str.replace(/\s\s+/g, ' '); 
+0

perché l'extra '\ s'? Non ce n'è bisogno. – epascarello

4
var str = " This should become something   else too . " 
$.trim(str).replace(/\s(?=\s)/g,'') 

Questo utilizza lookahead per sostituire più spazi con un singolo spazio.

Problemi correlati