30

I got HTML element contains this:

  <!--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>  

When i read it using jquery i get the .text() contains a lot of spaces and /n in between the text but without the html tags.

How to remove all these white spaces and return the clean text using jquery or pure javascript?

Amr Elgarhy
  • 66,568
  • 69
  • 184
  • 301

4 Answers4

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

This uses a regular expression (/.../) to search for one or more (+) whitespace characters (\s) throughout the element's text (g, the global modifier, which finds all matches rather than stopping after the first match) and replace each with one space (" ").

Matt S
  • 14,976
  • 6
  • 57
  • 76
  • +1 I misread the question. That will work great for spaces and newlines (what the OP said he needed). Be aware that some browsers don't quite implement `\s` correctly once you get into non-ASCII whitespace (http://thinkweb2.com/projects/prototype/whitespace-deviations/), but that's a niggle. :-) – T.J. Crowder May 24 '10 at 15:52
  • 1
    You're missing your `g` (global indicator). – user113716 May 24 '10 at 15:53
  • @patrick Yes, after adding the 'g' (global indicator), things worked perfect. – Amr Elgarhy May 24 '10 at 16:02
23

For the string

"    this  is my   string       "

You probably want to make the excessive spaces single spaces, but remove the leading and trailing spaces entirely. For that, add another .replace

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

For

"this is my string"

Update

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

Thanks, @Pier-Luc Gendreau

Adam Grant
  • 12,477
  • 10
  • 58
  • 65
4

You can remove all instances of congruent whitespace and newlines like so

// 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 );

Then to clean it up and apply it to your jQuery

$.trim( $element.text().replace( /[\s\n\r]+/g, ' ' ) )
Peter Bailey
  • 105,256
  • 31
  • 182
  • 206
-1

This code working fine, Here I have remove extra white spaces in TextEditor.

var htmlstring =   $("#textareaCode").html().replace(/(&nbsp;)*/g, "");

for more Deatils refer: http://www.infinetsoft.com/Post/How-to-remove-nbsp-from-texteditor-in-jQuery/1226#.V0J-2fl97IU

Thivan Mydeen
  • 1,461
  • 11
  • 7