2010-07-20 15 views

Respuesta

107

Se podría utilizar una expresión regular reemplazar:

str = str.replace(/ +(?=)/g,''); 

Crédito: La expresión regular anterior fue tomado de Regex to replace multiple spaces with a single space

+30

Esto funciona también. s = s.replace (/ +/g, ""); – InfinitiesLoop

+0

Muy cierto :) - inserta más caracteres-- – Josiah

+0

'str = '' + str.replace (/ + (? =)/G, '')' es una solución poco mejor en caso de que su str sea 'undefinied' o' NaN' :) – Val

31

Hay un montón de opciones para las expresiones regulares que puede utilizar para lograr esto. Un ejemplo que tenga un buen rendimiento es:

str.replace(/\s\s+/g, ' ') 

Ver esta pregunta para una discusión completa sobre este problema exacto: Regex to replace multiple spaces with a single space

+0

gracias este es el único regex uno que funcionó para mí –

+0

Este es el único que probé y funcionó para mi caso. –

3

También puede reemplazar sin una expresión regular.

while(str.indexOf(' ')!=-1)str.replace(' ',' '); 
+1

Funciona también ... La pregunta es: ¿cuál es más eficiente? Esta versión o la versión de expresiones regulares Tengo una preferencia por expresiones regulares ya que nunca practicamos lo suficiente. –

+0

No lo sé, si no tiene coincidencias, este método es más eficiente. Si tienes muchas coincidencias, alguien lo está haciendo mal. – kennebec

+0

Aquí hay un [violín] (http://jsfiddle.net/NickT/ScJKw/1/) que, espero, enfatice la diferencia. Resulta claramente que las expresiones regulares son, en todos los casos, al menos tan rápidas como las versiones de bucle. No dice que la versión de bucle es mala, solo señala que uno siempre debe considerar la mantenibilidad y la evolución del producto. –

18

a todos olvidarse de cuantificador n {X,} http://www.w3schools.com/jsref/jsref_regexp_nxcomma.asp

aquí mejor solución

str = str.replace(/\s{2,}/g, ' '); 
+0

También puede citar el sitio web [Expresión regular] (http://www.regular-expressions.info/) para todo tipo de sabores de expresiones regulares y referencias completas. –

+1

¿Cuál es la mejoría en el uso del cuantificador de corchetes sobre un simple +? –

+0

@ un-usuario no descriptivo '/ \ s +/g' también reemplaza espacios simples (no hay necesidad de esto) pero'/\ s \ s +/g' o '/ \ s {2,}/g' reemplaza solo espacios múltiples –

Cuestiones relacionadas