web-dev-qa-db-fra.com

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

J'ai la chaîne HTML suivante. Quel serait l'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>
149
Sunil

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

Modifier

Comme indiqué dans d'autres commentaires, il est possible d'utiliser l'approche regex. La méthode trim est en réalité simplement un alias pour une expression rationnelle:

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.

224
Chris Baker
var str = "  my awesome string   "
str.trim();    

pour les anciens navigateurs, utilisez regex

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string" 
57
KhanSharp
string.replace(/^\s+|\s+$/g, "");
11
Sandeep Manne

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

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

Et voulez remplacer toutes les lignes de repère, pour obtenir ce résultat:

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

Vous devez ajouter le drapeau multiline à vos expressions rationnelles, ^ et $, ligne par ligne:

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

Devis pertinent de docs :

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 "$" ne correspondent pas uniquement au début ou à la fin de la chaîne entière au début ou à la fin d'une ligne de la chaîne.

5
Jaime Gómez

Je sais que c'est une très vieille question, mais sa réponse n’est toujours pas acceptée. Je vois que vous souhaitez supprimer les éléments suivants: les balises HTML "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 de début et de fin

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

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

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

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 retournera la chaîne "No.255 Colombo"

02). Si vous devez supprimer tous les espaces, utilisez ceci:

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

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

0
Chamila Maddumage