Estoy tratando de encontrar una forma de recortar espacios desde el principio y el final de la cadena de título. Estaba usando esto, pero no parece estar funcionando:
title = title.replace(/(^[\s]+|[\s]+$)/g, '');
¿Algunas ideas?
javascript
regex
James Jeffery
fuente
fuente
.trim
incorporado ahora, así que esta es la respuesta para los 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; }
Respuestas:
Nota: A partir de 2015, todos los principales navegadores (incluido IE> = 9) admiten String.prototype.trim () . Esto significa que para la mayoría de los casos de uso, simplemente hacer
str.trim()
es la mejor manera de lograr lo que la pregunta plantea.Steven Levithan analizó muchas implementaciones diferentes de
trim
Javascript en términos de rendimiento.Su recomendación es:
para "implementación de propósito general que es rápido entre navegadores", y
"si desea manejar cadenas largas excepcionalmente rápido en todos los navegadores".
Referencias
fuente
String.prototype.trim = String.prototype.trim || function trim() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };
/^\s\s*/
y no esta/^\s*/
trim1
ytrim11
?Si usar jQuery es una opción:
o simplemente:
fuente
Como @ChaosPandion mencionó, el
String.prototype.trim
método se ha introducido en la especificación ECMAScript 5th Edition , algunas implementaciones ya incluyen este método, por lo que la mejor manera es detectar la implementación nativa y declararla solo si no está disponible:Entonces puedes simplemente:
fuente
String.prototype.trim
no es una función, no es elString.prototype.trim
método descrito en la 5ta edición de ECMAScript Especificación, la especificación garantiza quetrim
es un objeto de función en entornos 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." }
Sé que esta es una publicación antigua, pero pensé que compartiría nuestra solución. En la búsqueda del código más corto (no todo el mundo ama la expresión regular breve), uno podría usar:
Por cierto: ejecuté esta misma prueba a través del enlace compartido anteriormente blog.stevenlevithan.com - Ajuste de JavaScript más rápido y este patrón superó a todas las demás MANOS!
Usando IE8, prueba agregada como prueba13. Los resultados fueron:
fuente
ECMAScript 5 es compatible
trim
y esto se ha implementado en Firefox.moldura - MDC
fuente
Aquí, esto debería hacer todo lo que necesitas
fuente
Aquí hay algunos métodos que he usado en el pasado para recortar cadenas en js:
fuente
^[\s*]+
coincide*
al comienzo de la cadena, de modo que su función se ajuste"*** Foo"
a"Foo"
.Aquí está mi código actual, la segunda línea funciona si comento la tercera línea, pero no funciona si la dejo como está.
fuente
Solo usa el
string.trim()
método. Es compatible con todos los principales navegadores. Referencia aquí: http://www.w3schools.com/jsref/jsref_trim_string.aspfuente
jQuery.trim ("hola, ¿cómo estás?");
:)
fuente
Cuando el DOM está completamente cargado, puede agregar esto a todos los campos de texto. Nunca he tenido una situación en la que necesitara enviar espacios iniciales o finales, por lo que hacerlo todo el tiempo a nivel mundial me ha funcionado ...
fuente
blur
ocurre realmente antes del envío cuando estoy en un campo y presiono <kbd> enter </kbd> para enviar un formulario?Esto es lo que sugiere JavaScript Architect / Guru Douglas Crockford.
Nota: debe definir "método" para Function.prototype.
Alternativamente
Observación
En los navegadores recientes, el método de recorte se incluye de manera predeterminada. Por lo tanto, no tiene que agregarlo explícitamente.
Los principales navegadores Chrome, Firefox, Safari, etc. admiten el método de recorte . Comprobado en Chrome 55.0.2883.95 (64 bits), Firefox 51.0.1 (64 bits), Safari 10.0 (12602.1.50.0.10).
fuente
fuente
un intento recursivo para esto
llama así:
si desea filtrar caracteres específicos, puede definir una cadena de lista básicamente:
fuente
' '
, pero la pregunta es sobre el espacio en blanco en general, incluyendo"\n"
,"\t"
y otros caracteres no imprimibles que coinciden en expresiones regulares por/\s/
.