Comment supprimer les espaces blancs de début et de fin d'une chaîne html donnée?

177

J'ai la chaîne HTML suivante. Quel serait un exemple de code en JavaScript pour supprimer les espaces blancs de début et de fin de cette chaîne?

<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>
Sunil
la source
vérifier ceci
musefan
Quel est votre vrai problème? Voulez-vous supprimer les espaces avant d'insérer des nœuds dans le document?
Rob W
Je souhaite supprimer tous les espaces blancs de début ainsi que tous les espaces blancs de fin. Très mon comme la méthode Trim en C # sauf qu'elle supprime même les espaces blancs.
Sunil
Donc, dans mon exemple, je devrais enfin obtenir ce qui suit après le rognage: Découpage à l'aide de JavaScript <br /> <br /> <br /> <br /> tous les espaces blancs de début et de fin
Sunil
@Sunil Je ne sais pas si vous avez déjà résolu cela, mais vous pouvez essayer l'une de ces solutions: stackoverflow.com/questions/16708158/...
Chris Baker

Réponses:

244

Voir la méthode 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);

Éditer

Comme indiqué dans d'autres commentaires, il est possible d'utiliser l'approche regex. La trimméthode n'est en fait qu'un alias pour une expression régulière:

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

... cela injectera la méthode dans le prototype natif pour les navigateurs qui nagent encore dans la partie peu profonde de la piscine.

Chris Baker
la source
3
Je préférerais une méthode regex, car elle n'est pas prise en charge dans tous les navigateurs ( toux toux IE <9).
PeeHaa
2
La méthode Trim ne coupera pas les espaces blancs, mais uniquement les espaces. Ce n'est donc pas ce que je recherche.
Sunil
8
Je ne suis pas sûr de ce que vous pensez des "espaces blancs", mais la coupe supprimera les espaces en général (nouvelle ligne, espace, tabulation, etc.), pas seulement le caractère d'espace.
bsa le
2
@bsa J'en suis venu à comprendre qu'il signifie "espace blanc" au sens visuel, comme dans "des zones visuellement vides dans les résultats du rendu du HTML", puis il a ajouté dans un commentaire ci-dessus "sauf les retours à la ligne causés par les brbalises".
Chris Baker
2
pourquoi n'y a-t-il pas de coche sur une réponse avec 170 votes positifs? SO me confond parfois.
tcoulson
63
var str = "  my awesome string   "
str.trim();    

pour les anciens navigateurs, utilisez regex

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string" 
Jhankar Mahbub
la source
2
"[]" est exactement le même que "". Un groupe de caractères d'exactement un caractère est… enfin… exactement un caractère.
Flimzy
2
@Flimzy: Oui, cela aurait plus de sens d'écrire [\t\n\ ]ou tout simplement à la \splace de [ ]ce qui n'a aucun sens.
erik
11
string.replace(/^\s+|\s+$/g, "");
Sandeep Manne
la source
Lisez la question, &nbsp;est utilisé à la place d'un espace blanc ordinaire. En plus de cela, l'espace blanc est contenu dans une balise.
Rob W
6

Si vous travaillez avec une chaîne multiligne, comme un fichier de code:

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

Et que vous souhaitez remplacer toutes les lignes principales, pour obtenir ce résultat:

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

Vous devez ajouter le multilinedrapeau à votre expression régulière ^et faire $correspondre ligne par ligne:

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

Citation pertinente tirée de la documentation :

L'indicateur "m" indique qu'une chaîne d'entrée multiligne doit être traitée comme plusieurs lignes. Par exemple, si "m" est utilisé, "^" et "$" passent de la correspondance au début ou à la fin de la chaîne entière au début ou à la fin de n'importe quelle ligne de la chaîne.

Jaime Gómez
la source
4

Je sais que c'est une question très ancienne, mais elle n'a toujours pas de réponse acceptée. Je vois que vous voulez supprimer les éléments suivants: les balises html qui sont «vides» et les espaces blancs basés sur une chaîne html.

J'ai trouvé une solution basée sur votre commentaire pour le résultat que vous recherchez:

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() supprime les espaces blancs de début et de fin

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

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); supprime les balises vides

Anthony
la source
3
var trim = your_string.replace(/^\s+|\s+$/g, '');
SenorAmor
la source
1
Va-t-il supprimer les espaces blancs comme <br /> ou <p> & nbsp; & nbsp; </p> <div> & nbsp; </div>? Trmming des espaces simples n'est pas un problème. C'est la suppression des espaces blancs que je recherche.
Sunil
va-t-il supprimer les espaces blancs
user2086641
3

01). Si vous devez supprimer uniquement les espaces blancs de début et de fin, utilisez ceci:

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

cela renverra la chaîne "No.255 Colombo"

02). Si vous devez supprimer tout l'espace blanc, utilisez ceci:

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

cela renverra la chaîne "No.255Colombo"

Chamila Maddumage
la source