Estou tentando encontrar uma maneira de aparar espaços do início e do fim da sequência de título. Eu estava usando isso, mas não parece estar funcionando:
title = title.replace(/(^[\s]+|[\s]+$)/g, '');
Alguma ideia?
javascript
regex
James Jeffery
fonte
fonte
.trim
incorporado agora, então esta é a resposta para os navegadores modernos: stackoverflow.com/a/3000900/29182function trim11 (str) { str = str.replace(/^\s+/, ''); for (var i = str.length - 1; i >= 0; i--) { if (/\S/.test(str.charAt(i))) { str = str.substring(0, i + 1); break; } } return str; }
Respostas:
Nota: A partir de 2015, todos os principais navegadores (incluindo IE> = 9) suportam String.prototype.trim () . Isso significa que, na maioria dos casos de uso, simplesmente fazer
str.trim()
é a melhor maneira de alcançar o que a pergunta faz.Steven Levithan analisou muitas implementações diferentes do
trim
Javascript em termos de desempenho.Sua recomendação é:
para "implementação de uso geral rápida entre navegadores" e
"se você quiser lidar com seqüências longas excepcionalmente rápidas em todos os navegadores".
Referências
fonte
String.prototype.trim = String.prototype.trim || function trim() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };
/^\s\s*/
e não este/^\s*/
trim1
etrim11
?Se o uso do jQuery for uma opção:
ou simplesmente:
fonte
Como o @ChaosPandion mencionou, o
String.prototype.trim
método foi introduzido na especificação do ECMAScript 5th Edition , algumas implementações já incluem esse método, portanto, a melhor maneira é detectar a implementação nativa e declará-la apenas se não estiver disponível:Então você pode simplesmente:
fonte
String.prototype.trim
não for uma função, não é oString.prototype.trim
método descrito na ECMAScript 5th Edition Especificação, a especificação garante quetrim
é um objeto de função nos ambientes ES5.throw { name: "UnlikelyPolyfillException", message: "Did someone really write a property on the String prototype named 'trim' that isn't a ECMA 5 compatible shim? Come on now, that's crazy." }
Sei que este é um post antigo, mas pensei em compartilhar nossa solução. Na busca pelo código mais curto (nem todo mundo adora regex conciso), pode-se usar:
BTW: Eu executei esse mesmo teste através do link compartilhado acima blog.stevenlevithan.com - Ajuste de JavaScript mais rápido e esse padrão superou todas as outras MÃOS!
Usando o IE8, teste adicionado como teste13. Os resultados foram:
fonte
O ECMAScript 5 suporta
trim
e isso foi implementado no Firefox.trim - MDC
fonte
Aqui, isso deve fazer tudo o que você precisa
fonte
Aqui estão alguns métodos que eu tenho usado no passado para aparar cadeias de caracteres em js:
fonte
^[\s*]+
corresponde*
ao início da cadeia, de modo que suas guarnições de função"*** Foo"
para"Foo"
.Aqui está o meu código atual: a 2ª linha funciona se eu comentar a 3ª linha, mas não funciona se eu deixar como está.
fonte
Basta usar o
string.trim()
método É suportado por todos os principais navegadores. Consulte aqui: http://www.w3schools.com/jsref/jsref_trim_string.aspfonte
jQuery.trim ("olá, como vai você?");
:)
fonte
Quando o DOM estiver totalmente carregado, você poderá adicioná-lo a todos os campos de texto. Eu nunca tive uma situação em que precisava enviar espaço à esquerda ou à direita, por isso fazê-lo o tempo todo em todo o mundo funcionou para mim ...
fonte
blur
realmente ocorre antes do envio quando estou em um campo e pressione <kbd> enter </kbd> para enviar um formulário?É o que sugere o arquiteto JavaScript / Guru Douglas Crockford.
Nota: você precisa definir "método" para Function.prototype.
alternativamente
Observação
Em navegadores recentes, o corte método de é incluído por padrão. Portanto, você não precisa adicioná-lo explicitamente.
Os principais navegadores Chrome, Firefox, Safari etc. suportam o método de apara . Verificado no Chrome 55.0.2883.95 (64 bits), Firefox 51.0.1 (64 bits), Safari 10.0 (12602.1.50.0.10).
fonte
fonte
uma tentativa recursiva para isso
chame assim:
Se você deseja filtrar caracteres específicos, pode definir uma string de lista basicamente:
fonte
' '
, mas a pergunta é sobre espaço em branco em geral, incluindo"\n"
,"\t"
e outros caracteres não imprimíveis que correspondem à expressão regular por/\s/
.