Come rimuovere gli spazi bianchi iniziali e finali da una determinata stringa html?


178

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

<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>


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

Voglio rimuovere tutti gli spazi bianchi iniziali e tutti gli spazi bianchi finali. Mi piace molto il metodo Trim in C # tranne per il fatto che rimuove anche gli spazi bianchi.
Sunil

Quindi, nel mio esempio, dovrei finalmente ottenere quanto segue dopo il taglio: Ritaglio usando JavaScript <br /> <br /> <br /> <br /> tutti gli spazi bianchi iniziali e finali
Sunil

@Sunil Non so se l'hai mai risolto, ma potresti provare una di queste soluzioni: stackoverflow.com/questions/16708158/…
Chris Baker

Risposte:


245

Vedi 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);

modificare

Come notato in altri commenti, è possibile utilizzare l'approccio regex. Il trimmetodo è 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.


3
Preferirei un modo regex, perché non è supportato in tutti i browser ( tosse IE <9).
PeeHaa,

2
Il metodo Trim non taglia gli spazi bianchi, ma solo gli spazi. Quindi non è quello che sto cercando.
Sunil

8
Non sono sicuro di cosa pensi che siano gli "spazi bianchi", ma il trim rimuoverà gli spazi in generale (newline, spazio, tab ecc.), Non solo il carattere dello spazio.
bsa,

2
@bsa Ho capito che significa "spazio bianco" in senso visivo, come in "aree visivamente vuote nei risultati del rendering dell'HTML", e poi ha aggiunto in un commento sopra "tranne le nuove righe causate dai brtag".
Chris Baker,

2
perché non c'è un segno di spunta su una risposta con 170 voti positivi? SO a volte mi confonde.
tcoulson,

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

per i vecchi browser, usa regex

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

2
"[]" è esattamente uguale a "". Un raggruppamento di personaggi di esattamente un personaggio è ... beh ... esattamente un personaggio.
Flimzy

2
@Flimzy: Sì, avrebbe più senso scrivere [\t\n\ ]o semplicemente \sinvece del [ ]quale non ha senso.
Erik,

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

Leggi la domanda, &nbsp;viene utilizzato al posto di un normale spazio bianco. Inoltre, lo spazio bianco è contenuto in un tag.
Rob W

6

Se stai lavorando con una stringa multilinea, come un file di codice:

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

E vuoi sostituire tutte le linee principali, per ottenere questo risultato:

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

Devi aggiungere il multilineflag alla tua regex ^e $abbinare riga per riga:

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

Citazione pertinente da documenti :

Il flag "m" indica che una stringa di input su più righe deve essere trattata come più righe. Ad esempio, se si utilizza "m", "^" e "$" cambiano dalla corrispondenza all'inizio o alla fine dell'intera stringa all'inizio o alla fine di qualsiasi riga all'interno della stringa.


4

So che questa è una domanda molto vecchia, ma non ha ancora una risposta accettata. Vedo che vuoi che vengano rimossi: tag html che sono "vuoti" e spazi bianchi basati su una stringa html.

Ho trovato una soluzione basata sul tuo commento per l'output che stai 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 gli spazi bianchi iniziali e finali

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

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


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

1
Rimuoverà spazi bianchi come <br /> o <p> & nbsp; & nbsp; </p> <div> & nbsp; </div>? Trimming semplici spazi non è un problema. È la rimozione dello spazio bianco che sto cercando.
Sunil

rimuoverà lo spazio bianco
user2086641

3

01). Se è necessario rimuovere solo gli spazi bianchi iniziali e finali utilizzare questo:

var address = "  No.255 Colombo  "
address.replace(/^[ ]+|[ ]+$/g,'');

questo restituirà la stringa "No.255 Colombo"

02). Se è necessario rimuovere tutto lo spazio bianco, utilizzare questo:

var address = "  No.255 Colombo  "
address.replace(/\s/g,"");

questo restituirà la stringa "No.255Colombo"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.