Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

    
            
  •              ¿Recortar cadena en JavaScript?                                      25 respuestas                          
  •     
    

¿Qué es una implementación de JavaScript limpia y eficiente para eliminar espacios iniciales y finales de una cadena?

Por ejemplo:

" perro "

" perro "

" perro "

" perro "

todos se convierten en

"dog"

¿Fue útil?

Solución

Use esto:

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

La función de recorte ahora estará disponible como una función de primera clase en sus cadenas. Por ejemplo:

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

EDITAR : Tomó la sugerencia de J-P de combinar los patrones de expresiones regulares en uno. También se agregó el modificador global según la sugerencia de Christoph.

Tomó la idea de Matthew Crumley de oler la función de recorte antes de recrearla. Esto se hace en caso de que la versión de JavaScript utilizada en el cliente sea más reciente y, por lo tanto, tenga su propia función de recorte nativa.

Otros consejos

Para usuarios de jquery, ¿qué tal $.trim(s)

Gumbo ya señaló esto en un comentario, pero vale la pena repetirlo como respuesta: el método trim () se agregó en JavaScript 1.8.1 y es compatible con todos los navegadores modernos (Firefox 3.5+, IE 9, Chrome 10, Safari 5.x), aunque IE 8 y versiones anteriores no lo admiten. El uso es simple:

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

Ver también:

Aquí está la función que uso.

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

Un mejor polyfill del MDN que admite la eliminación de BOM y NBSP :

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

Tenga en cuenta que la modificación de los prototipos incorporados viene con un impacto en el rendimiento (debido a la reducción del motor JS en varias optimizaciones de tiempo de ejecución), y en situaciones críticas de rendimiento, es posible que deba considerar la alternativa de definir myTrimFunction (cadena) en su lugar. Dicho esto, si está apuntando a un entorno antiguo sin soporte nativo de .trim () , es probable que tenga problemas de rendimiento más importantes con los que lidiar.

Steven Levithan escribió una vez sobre cómo implementar un Ajuste de JavaScript más rápido . Definitivamente vale la pena echarle un vistazo.

Si ya está utilizando jQuery, puede consultar jQuery .trim () que ya se proporciona con jQuery.

Si, en lugar de escribir un nuevo código para recortar una cadena, está viendo el código existente que llama a " strip () " y preguntándose por qué no está funcionando, es posible que desee comprobar si intenta incluir algo como el marco prototypejs y asegurarse de que realmente se esté cargando.
Ese marco agrega una función de tira a todos los objetos de cadena, pero si p. lo actualizó y sus páginas web todavía se refieren al antiguo archivo .js, por supuesto, no funcionará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top