String strip() para JavaScript? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

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

Por ejemplo:

" dog"

"dog "

" dog "

" dog "

Todos se convierten en

"dog"

Author: Boann, 2009-09-13

8 answers

Usa esto:

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

La función trim 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 ha añadido el modificador global por sugerencia de Christoph.

Tomó la idea de Matthew Crumley sobre oler la función trim 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.

 183
Author: David Andres,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-13 20:56:49

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

 135
Author: user638373,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-11 10:49:30

Gumbo ya señaló esto en un comentario, pero esto 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 mayores no lo soportan. El uso es simple:

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

Véase también:

 77
Author: jpatokal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-17 01:41:51

Aquí está la función que uso.

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}
 11
Author: Mic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-13 16:08:14

Un mejor relleno de la 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 prototipos incorporados viene con un éxito de rendimiento (debido a que el motor JS falla en una serie de optimizaciones de tiempo de ejecución), y en situaciones críticas de rendimiento es posible que deba considerar la alternativa de definir myTrimFunction(string) en su lugar. Dicho esto, si se dirige a un entorno más antiguo sin soporte nativo .trim(), es probable que tenga más importantes problemas de rendimiento a tratar.

 11
Author: Bardi Harborow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-14 16:22:42

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

 7
Author: Gumbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-13 17:14:19

Si ya está utilizando jQuery, entonces es posible que desee echar un vistazo a jQuery.trim() que ya se proporciona con jQuery.

 7
Author: Filip Dupanović,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-09 22:32:52

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

 5
Author: Eric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-16 16:34:38