Dada una cadena como:
"¡El perro tiene una cola larga y es ROJA!"
¿Qué tipo de magia jQuery o JavaScript se puede usar para mantener los espacios en un solo espacio máximo?
Objetivo:
"¡El perro tiene una cola larga y es ROJA!"
javascript
jquery
regex
Un aprendiz
fuente
fuente
str.replace(/ +(?= )/g,'');
no está reemplazando nada que no tenga que hacer.Respuestas:
Dado que también desea cubrir pestañas, líneas nuevas, etc., simplemente reemplace
\s\s+
con' '
:Si realmente desea cubrir solo espacios (y, por lo tanto, no pestañas, líneas nuevas, etc.), hágalo:
fuente
function removeExtraSpaces(string){ return string.replace(/\s{2,}/g, ' ');}
trim()
. Es más rápido que la expresión regular. Podrías simplemente hacerstring.trim().replace(/\s\s+/g, ' ');
ostring.replace(/\s\s+/g, ' ').trim();
./\s\s+/g
y/\s{2,}/g
no coinciden con los espacios en blanco a menos que haya al menos dos adyacentes entre sí, por ejemplo, coincidirá con \ t \ t pero no con \ t \.string.replace(/\s+/g, ' ')
coincidirá con todas las subcadenas de caracteres de espacios en blanco simples y múltiples y las reemplazará con un solo espacio.Como parece estar interesado en el rendimiento, lo perfilé con firebug. Aquí están los resultados que obtuve:
Esto está en Firefox, ejecutando reemplazos de cadena de 100k.
Te animo a que hagas tus propias pruebas de perfil con firebug, si crees que el rendimiento es un problema. Los humanos son notoriamente malos al predecir dónde se encuentran los cuellos de botella en sus programas.
(Además, tenga en cuenta que la barra de herramientas del desarrollador de IE 8 también tiene un generador de perfiles incorporado; puede valer la pena comprobar cómo es el rendimiento en IE)
fuente
( / +(?= )/g, ' ');
falla en IE9, deja espacios dobles:"Foo Bar Baz".replace(/ +(?= )/g, ' ');
->"Foo Bar Baz"
EDITAR: Si desea reemplazar todo tipo de caracteres de espacio en blanco, la forma más eficiente sería así:
fuente
Esta es una solución, aunque apuntará a todos los caracteres de espacio:
Editar : Esto probablemente sea mejor ya que apunta a un espacio seguido de 1 o más espacios:
Método alternativo:
No lo utilicé
/\s+/
solo, ya que reemplaza los espacios que abarcan 1 carácter varias veces y podría ser menos eficiente ya que apunta más de lo necesario.No probé a fondo ninguno de estos, así que si hay errores.
Además, si va a hacer un reemplazo de cadena, recuerde reasignar la variable / propiedad a su propio reemplazo, por ejemplo:
Usando jQuery.prototype.text:
fuente
Tengo este método, lo llamo el método Derp por falta de un nombre mejor.
Ejecutarlo en JSPerf da algunos resultados sorprendentes.
fuente
Un método más robusto: se encarga de eliminar también los espacios iniciales y finales, si existen. P.ej:
Su ejemplo no tenía esos espacios, pero también son un escenario muy común, y la respuesta aceptada fue solo recortarlos en espacios individuales, como: "¡El ... ROJO!", Que no es lo que normalmente necesitará.
fuente
Más robusto:
fuente
yo sugiero
por solo espacios
O
para convertir múltiples retornos en un solo retorno también.
fuente
Sé que llego tarde a la fiesta, pero descubrí una buena solución.
Aquí está:
fuente
Aquí hay una solución alternativa si no desea usar reemplazar (reemplazar espacios en una cadena sin usar reemplazar javascript)
fuente
Respuesta completa sin cifrar para novatos et al.
Esto es para todos los tontos como yo que prueban los guiones escritos por algunos de ustedes que no funcionan.
Los siguientes 3 ejemplos son los pasos que tomé para eliminar caracteres especiales Y espacios adicionales en los siguientes 3 sitios web (todos los cuales funcionan perfectamente) {1. EtaVisa.com 2. EtaStatus.com 3. Tikun.com} así que sé que funcionan perfectamente.
Los hemos encadenado con más de 50 a la vez y sin problemas.
// Esto eliminó los caracteres especiales + 0-9 y solo permite letras (mayúsculas y minúsculas)
// Esto eliminó caracteres especiales y permite solo letras (mayúsculas y minúsculas) y 0-9 Y espacios
// Esto eliminó caracteres especiales y permite solo letras (mayúsculas y minúsculas) y 0-9 Y espacios // El .replace (/ \ s \ s + / g, "") al final elimina espacios excesivos // cuando I utilizaba comillas simples, no funcionó.
:: SIGUIENTE :: Guardar # 3 como
a .js
// Llamé al mío NoDoubles.js:: SIGUIENTE :: Incluya su JS en su página
Incluya esto en su campo de formulario :: como
Para que se vea así
Esto eliminará caracteres especiales, permitirá espacios individuales y eliminará espacios adicionales.
fuente
También una posibilidad:
fuente
O si también quieres reemplazar pestañas:
fuente
Jquery tiene la función trim () que básicamente convierte algo así como "FOo Bar" en "FOo Bar".
Es mucho más útil porque elimina automáticamente los espacios vacíos al principio y al final de la cadena también. No se necesita expresión regular.
fuente
este reemplazo no se usa, string = string.split (/ \ W + /);
fuente
fuente
Podemos usar la siguiente expresión regular explicada con la ayuda del comando del sistema sed. La expresión regular similar se puede utilizar en otros idiomas y plataformas.
Agregue el texto en algún archivo, digamos prueba
Podemos usar la siguiente expresión regular para reemplazar todos los espacios en blanco con un solo espacio
Espero que esto sirva para el propósito
fuente
Intente esto para reemplazar múltiples espacios con un solo espacio.
Leer más @ Reemplazar múltiples espacios con un solo espacio
fuente
resultado:
fuente
Para obtener más control, puede usar la devolución de llamada de reemplazo para manejar el valor.
fuente
Este script elimina cualquier espacio en blanco (múltiples espacios, pestañas, retornos, etc.) entre palabras y ajustes:
fuente
¡'puntero del mouse táctil' .replace (/ ^ \ s + | \ s + $ | (\ s) + / g, "$ 1") debería hacer el truco!
fuente
Sé que tenemos que usar regex, pero durante una entrevista, me pidieron que lo hiciera SIN USAR REGEX.
@slightlytyler me ayudó a adoptar el siguiente enfoque.
fuente