2012-04-05 16 views
114

Ho la seguente stringa html. Quale sarebbe il codice di esempio in JavaScript per rimuovere gli spazi bianchi iniziali e finali da questa stringa?Come rimuovere spazi bianchi iniziali e finali da una determinata stringa html?

<p>&nbsp;&nbsp;</p> 
<div>&nbsp;</div> 
Trimming using JavaScript<br /> 
<br /> 
<br /> 
<br /> 
all leading and trailing white spaces 
<p>&nbsp;&nbsp;</p> 
<div>&nbsp;</div> 
+0

[controllare questo] (http://stackoverflow.com/questions/498970/how-do-i-trim-a-string-in-javascript) – musefan

+0

Qual è il tuo vero problema? Vuoi rimuovere spazi bianchi prima di inserire nodi nel documento? –

+0

Voglio rimuovere tutti gli spazi bianchi iniziali e tutti gli spazi bianchi finali. Molto simile al metodo Trim in C# tranne che rimuove anche gli spazi bianchi. – Sunil

risposta

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

Leggi la domanda,'   'viene utilizzato al posto di uno spazio bianco ordinario. Inoltre, lo spazio bianco è contenuto in un tag. –

+1

Non fa quello che mi serve. – Sunil

176

vedere il metodo String trim() - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim

var myString = ' bunch of <br> string data with<p>trailing</p> and leading space '; 
myString = myString.trim(); 
// or myString = String.trim(myString); 

Modifica

Come notato in altri commenti, è possibile utilizzare l'approccio regex. Il metodo trim è effettivamente solo un alias per una regex:

if(!String.prototype.trim) { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,''); 
    }; 
} 

... questo inietterà il metodo nel prototipo nativo per quei browser che stanno ancora nuotando nella parte bassa della piscina.

+2

Preferirei un modo regex, in quanto non è supportato in tutti i browser (* cough cough * IE <9). – PeeHaa

+1

Il metodo di ritaglio non elimina gli spazi bianchi, ma solo gli spazi. Quindi non è quello che sto cercando. – Sunil

+6

Non sono sicuro di cosa pensate che siano "spazi bianchi", ma Trim eliminerà lo spazio bianco in generale (newline, spazio, tabulazione ecc.), Non solo il carattere dello spazio. – bsa

0
var trim = your_string.replace(/^\s+|\s+$/g, ''); 
+1

Rimuoverà spazi bianchi come
o

   

 
? Trmming spazi semplici non è un problema. È la rimozione dello spazio bianco che sto cercando. – Sunil

+0

rimuoverà lo spazio bianco – user2086641

45
var str = " my awesome string " 
str.trim();  

per i vecchi browser, utilizzare regex

str = str.replace(/^[ ]+|[ ]+$/g,'') 
//str = "my awesome string" 
+2

"[]" è esattamente uguale a "". Un raggruppamento di caratteri di esattamente un personaggio è ... beh ... esattamente un personaggio. – Flimzy

+1

@Flimzy: Sì, avrebbe più senso scrivere '[\ t \ n \]' o semplicemente '\ s' invece di' [] 'che non ha senso. – erik

3

Se si lavora con una stringa multilinea, come un file di codice:

<html> 
    <title>test</title> 
    <body> 
     <h1>test</h1> 
    </body> 
</html> 

e si desidera sostituire tutti linee guida, per ottenere questo risultato:

<html> 
<title>test</title> 
<body> 
<h1>test</h1> 
</body> 
</html> 

è necessario aggiungere il flag multiline al vostro regex, ^ e $ partita riga per riga:

string.replace(/^\s+|\s+$/gm, ''); 

Rilevante citazione from docs:

Il flag "m" indica che una stringa di input multilinea dovrebbe essere trattati come linee multiple Ad esempio, se si utilizza "m", "^" e "$" cambiano dalla corrispondenza solo all'inizio o alla fine dell'intera stringa all'inizio o alla fine di qualsiasi riga all'interno della stringa.

0

So che questa è una domanda molto vecchia ma non ha ancora una risposta accettata. Vedo che desideri rimuovere quanto segue: tag html "vuoti" e spazi bianchi basati su una stringa html.

Sono venuto su con una soluzione basata su un commento per l'uscita che si sta cercando:

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 

var str = "<p>&nbsp;&nbsp;</p><div>&nbsp;</div>Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces<p>&nbsp;&nbsp;</p><div>&nbsp;</div>"; 
 
console.log(str.trim().replace(/&nbsp;/g, '').replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));

.trim() rimuove spazi iniziali e finali

.replace(/&nbsp;/g, '') rimuove &nbsp;

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); rimuove tag vuoti