Como remover os espaços em branco à esquerda e à direita de uma determinada string html?

177

Eu tenho a seguinte string HTML. O que seria um exemplo de código em JavaScript para remover os espaços em branco iniciais e finais dessa sequência?

<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
fonte
verifique isso
musefan
Qual é o seu verdadeiro problema? Deseja remover o espaço em branco antes de inserir nós no documento?
Rob W
Desejo remover todos os espaços em branco à esquerda, bem como todos os espaços em branco à direita. Muito parecido com o método Trim em C #, exceto que ele remove espaços em branco.
Sunil
Então, no meu exemplo, eu finalmente deve obter o seguinte após o corte: Corte usando JavaScript <br /> <br /> <br /> <br /> todos os esquerda e à direita espaços em branco
Sunil
@Sunil Eu não sei se você já resolveu isso, mas você pode tentar uma das seguintes soluções: stackoverflow.com/questions/16708158/...
Chris Baker

Respostas:

244

Veja o método 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);

Editar

Como observado em outros comentários, é possível usar a abordagem regex. O trimmétodo é efetivamente apenas um alias para uma regex:

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

... isso injetará o método no protótipo nativo para os navegadores que ainda estão nadando na parte rasa da piscina.

Chris Baker
fonte
3
Eu preferiria uma maneira regex, porque não é suportado em todos os navegadores ( tosse tosse IE <9).
PeeHaa
2
O método Aparar não aparará espaços em branco, mas apenas espaços. Portanto, não é o que estou procurando.
Sunil
8
Não sei ao certo o que você acha que "espaços em branco" são, mas a aparagem removerá os espaços em branco em geral (nova linha, espaço, guia etc.), não apenas o caractere de espaço.
Sep13
2
@bsa Eu cheguei a entender que ele significa "espaço em branco" no sentido visual, como em "áreas visualmente em branco nos resultados da renderização do HTML", e então ele adicionou em um comentário acima "exceto novas linhas causadas por brtags".
Chris Baker
2
por que não há uma marca de seleção em uma resposta com 170 votos positivos? SO me confunde às vezes.
22618 Tcoulson
63
var str = "  my awesome string   "
str.trim();    

para navegadores antigos, use regex

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string" 
Jhankar Mahbub
fonte
2
"[]" é exatamente o mesmo que "". Um agrupamento de caracteres de exatamente um caractere é ... bem ... exatamente um caractere.
Flimzy
2
@ Limlimzy: Sim, faria mais sentido escrever [\t\n\ ]ou apenas em \svez disso [ ]não faz sentido.
Erik
11
string.replace(/^\s+|\s+$/g, "");
Sandeep Manne
fonte
Leia a pergunta, &nbsp;é usado em vez de um espaço em branco comum. Além disso, o espaço em branco está contido em uma tag.
Rob W
6

Se você estiver trabalhando com uma sequência de múltiplas linhas, como um arquivo de código:

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

E deseja substituir todas as linhas principais, para obter este resultado:

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

Você deve adicionar o multilinesinalizador ao seu regex ^e $corresponder linha por linha:

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

Citações relevantes dos documentos :

O sinalizador "m" indica que uma sequência de entrada de múltiplas linhas deve ser tratada como várias linhas. Por exemplo, se "m" for usado, "^" e "$" mudam de correspondentes apenas no início ou no final de toda a cadeia de caracteres para o início ou o final de qualquer linha dentro da cadeia.

Jaime Gómez
fonte
4

Sei que essa é uma pergunta muito antiga, mas ainda não tem uma resposta aceita. Vejo que você deseja remover o seguinte: tags html "vazias" e espaços em branco com base em uma string html.

Eu vim com uma solução com base no seu comentário para a saída que você está procurando:

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() remove os espaços em branco iniciais e finais

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

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); remove tags vazias

Anthony
fonte
3
var trim = your_string.replace(/^\s+|\s+$/g, '');
SenorAmor
fonte
1
Ele removerá espaços em branco como <br /> ou <p> & nbsp; & nbsp; </p> <div> & nbsp; </div>? Limpar espaços simples não é um problema. É a remoção de espaço em branco que estou procurando.
Sunil
será que vai remover espaço em branco
user2086641
3

01) Se você precisar remover apenas os espaços em branco iniciais e finais, use este:

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

isso retornará a string "No.255 Colombo"

02) Se você precisar remover todo o espaço em branco, use este:

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

isso retornará a string "No.255Colombo"

Chamila Maddumage
fonte