2010-05-24 25 views
25

llegué elemento HTML contiene esto:¿Cómo eliminar espacios en blanco adicionales usando javascript o jquery?

<!--Product Style--> <div style="float: right; padding-top: 4px; padding-bottom: 5px;"> P6C245RO </div> <div style="text-transform: uppercase; font-weight: bold; padding-top: 4px; padding-bottom: 5px;"> Style </div> <div style="clear: both; border-top: 1px solid rgb(216, 216, 216); padding-top: 4px;"> <!--Product Description--> <div style="font-size: 11px ! important;"></div> <div style="background: url(&quot;http://ii.armaniexchange.com/ArmaniExchange/images/en_US/global/globalgraphics/bullet.gif&quot;) no-repeat scroll 0pt 4px transparent; padding-left: 12px;">fine tonal striped fabric</div> <div style="background: url(&quot;http://ii.armaniexchange.com/ArmaniExchange/images/en_US/global/globalgraphics/bullet.gif&quot;) no-repeat scroll 0pt 4px transparent; padding-left: 12px;">epaulettes and sleeve tab</div> <div style="background: url(&quot;http://ii.armaniexchange.com/ArmaniExchange/images/en_US/global/globalgraphics/bullet.gif&quot;) no-repeat scroll 0pt 4px transparent; padding-left: 12px;">metal logo plate on the chest pocket</div> 

cuando lo leí usando jQuery consigo el .text() contiene una gran cantidad de espacios y/n entre el texto, pero sin las etiquetas HTML.

¿Cómo eliminar todos estos espacios en blanco y devolver el texto limpio usando jquery o javascript puro?

Respuesta

53
element.text().replace(/\s+/g, " "); 

Este utiliza una expresión regular (/.../) para buscar uno o más (+) caracteres de espacio en blanco (\s) en todo el texto del elemento (g, el modificador global, que busca todos los partidos en lugar de detenerse después de la primera coincidencia) y reemplazar cada uno con un espacio (" ").

+0

1 leí mal la pregunta. Eso funcionará muy bien para espacios y nuevas líneas (lo que OP dijo que necesitaba). Tenga en cuenta que algunos navegadores no implementan '\ s' correctamente una vez que ingresa en espacios en blanco que no son ASCII (http://thinkweb2.com/projects/prototype/whitespace-deviations/), pero eso es un problema. :-) –

+1

Falta su 'g' (indicador global). – user113716

+0

@patrick Sí, después de agregar la 'g' (indicador global), las cosas funcionaron perfectamente. –

3

Puede eliminar todas las instancias de los espacios en blanco congruentes y saltos de línea al igual que

// Note: console.log() requires Firebug 

var str = ' this is \n some text \r don\'t \t you know? '; 
console.log(str); 

str = str.replace(/[\s\n\r]+/g, ' '); 
console.log(str); 

Luego de limpiarlo y lo aplica a su jQuery

$.trim($element.text().replace(/[\s\n\r]+/g, ' ')) 
10

Para la cadena

" this is my string  " 

Es probable que desee convertir espacios excesivos en espacios individuales, pero elimine los espacios iniciales y finales entir ely Para ello, añadir otro .replace

s.replace(/\s+/g, " ").replace(/^\s|\s$/g, ""); 

para

"this is my string" 

actualización

s.replace(/\s+/g, " ").trim() 

Gracias, @ Pier-Luc Gendreau

+0

Puede eliminar espacios en blanco iniciales y finales con '.trim()' –

+0

Desafortunadamente, 'trim()' no es a prueba de balas. Pruébalo en la cadena que proporcioné arriba. –

+0

Parece que funciona aquí y mira el [polyfill en MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill), incluso se ve para listas de materiales y espacios sin interrupción! Sin embargo, requiere IE9 +. –

Cuestiones relacionadas