Javascript - How to remove all extra spacing between words

JavascriptJquery

Javascript Problem Overview


How can I remove all extra space between words in a string literal?

"some    value"

Should become

"some value"

Also,

"    This    should  become   something          else   too . "

Becomes

"This should become something else too ."

Do not worry about moving the .. Just as above is fine. I know I can use $.trim(str) to achieve the trailing/ending space removal. But, I'm not sure how to do the 1 space between words trick.

Javascript Solutions


Solution 1 - Javascript

var string = "    This    should  become   something          else   too . ";
string = string.replace(/\s+/g, " ");

This code replaces a consecutive set of whitespace characters (\s+) by a single white space. Note that a white-space character also includes tab and newlines. Replace \s by a space if you only want to replace spaces.

If you also want to remove the whitespace at the beginning and end, include:

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

This line removes all white-space characters at the beginning (^) and end ($). The g at the end of the RegExp means: global, ie match and replace all occurences.

Solution 2 - Javascript

var str = "    This    should  become   something          else   too . ";
str = str.replace(/ +(?= )/g,'');

Here's a working fiddle.

Solution 3 - Javascript

In case we want to avoid the replace function with regex,

We can achieve same result by

str.split(' ').filter(s => s).join(' ')
// var str = "    This    should  become   something          else   too . ";
// result is "This should become something else too ."

First, split the original string with space, then we will have empty string and words in an array. Second, filter to remain only words, then join all words with a whitespace.

Solution 4 - Javascript

var str = "    This    should  become   something          else   too . "
$.trim(str).replace(/\s(?=\s)/g,'')

This uses lookahead to replace multiple spaces with a single space.

Solution 5 - Javascript

jsFiddle Example

"    This    should  become   something          else   too . ".replace(/[\s\t]+/g,' ');

Solution 6 - Javascript

Another (perhaps easier to understand) regexp replacement that will do the trick:

var input = /* whatever */;
input = input.replace(/ +/g, ' ');

The regexp matches one or more spaces, so the .replace() call replaces every single or repeated space with a single space.

Solution 7 - Javascript

var str = 'some    value';
str.replace(/\s\s+/g, ' ');

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionP.Brian.MackeyView Question on Stackoverflow
Solution 1 - JavascriptRob WView Answer on Stackoverflow
Solution 2 - JavascriptJames HillView Answer on Stackoverflow
Solution 3 - JavascriptV-SHYView Answer on Stackoverflow
Solution 4 - JavascriptNarendra YadalaView Answer on Stackoverflow
Solution 5 - Javascriptused2couldView Answer on Stackoverflow
Solution 6 - JavascriptMatt BallView Answer on Stackoverflow
Solution 7 - JavascriptIvanView Answer on Stackoverflow