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>


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.


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" 

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, "");

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.


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


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

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"

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.