Pergunta

Esta questão já tem uma resposta aqui:

O que é uma implementação JavaScript limpo e eficiente para tirar espaços à esquerda e à direita de uma string?

Por exemplo:

" dog"

"dog "

" dog "

" dog "

all get transformado em

"dog"

Foi útil?

Solução

Use esta:

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

A função de ajuste agora estará disponível como uma função de primeira classe em suas cordas. Por exemplo:

" dog".trim() === "dog" //true

Editar : Tomou a sugestão de J-P para combinar os padrões de expressão regular em um. Também foi adicionado o modificador global, por sugestão de Christoph.

Tomou a idéia de Matthew Crumley sobre sniffing na função de ajuste antes de recriá-lo. Isto é feito no caso da versão de JavaScript utilizada no cliente é mais recente e, portanto, tem sua própria função, nativo guarnição.

Outras dicas

Para usuários do jQuery, como sobre $.trim(s)

Gumbo já observou isso em um comentário, mas isso vale a pena repetir como uma resposta: o método trim() foi adicionado em JavaScript 1.8.1 e é suportado por todos os navegadores modernos (Firefox 3.5+, IE 9, Chrome 10, Safari 5. x), embora o IE 8 e mais velhos não apoiá-lo. O uso é simples:

 "  foo\n\t  ".trim() => "foo"

Veja também:

Aqui está o uso da função I.

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}

A melhor polyfill do MDN que suporta remoção de BOM e NBSP :

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

Tenha em mente que modificar built-in protótipos vem com um acerto de desempenho (devido ao fiando motor JS em uma série de otimizações de tempo de execução), e no desempenho situações críticas que você pode precisar de considerar a alternativa de definir myTrimFunction(string) vez. Dito isto, se você está direcionando um ambiente mais velhos sem apoio .trim() nativa, que são susceptíveis de ter problemas mais importantes de desempenho para lidar com eles.

Steven Levithan escreveu certa vez sobre como implementar um Faster JavaScript guarnição . É definitivamente olhar um valor.

Se você já estiver usando jQuery, então você pode querer ter um olhar para jQuery.trim() que já é fornecido com jQuery.

Se, ao invés de escrever novo código para cortar uma corda, você está olhando para o código existente que as chamadas "strip ()" e se perguntando por que ele não está funcionando, você pode querer verificar se ele tenta incluir algo como quadro PrototypeJS, e verifique se ele está realmente sendo carregado.
Esse quadro adiciona uma função tira a todos os objetos String, mas se por exemplo você atualizou-lo e suas páginas ainda estão referindo-se aos antigos js arquivo que vai, naturalmente, não trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top