Javascript - 如何删除单词之间的所有额外间距

时间:2011-10-03 13:52:55

标签: javascript jquery

如何删除字符串文字中单词之间的所有额外空格?

"some    value"

应该成为

"some value"

另外,

"    This    should  become   something          else   too . "

变为

"This should become something else too ."

不要担心移动.。就像上面的情况一样好。我知道我可以使用$.trim(str)来实现尾随/结束空间的移除。但是,我不确定如何在单词技巧之间做一个空格。

7 个答案:

答案 0 :(得分:53)

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

此代码用一个空格替换一组连续的空白字符(\s+)。请注意,空格字符还包括制表符和换行符。如果您只想替换空格,请用空格替换\s

如果您还想在开头和结尾删除空格,请包含:

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

此行删除开头(^)和结束($)处的所有空白字符。 RegExp末尾的g表示:全局,即匹配并替换所有出现的事件。

答案 1 :(得分:12)

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

这是a working fiddle

答案 2 :(得分:4)

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

这使用lookahead用一个空格替换多个空格。

答案 3 :(得分:3)

jsFiddle Example

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

答案 4 :(得分:0)

另一个(也许更容易理解)正则表达式替换,可以解决这个问题:

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

正则表达式匹配一个或多个空格,因此.replace()调用用一个空格替换每个单独或重复的空格。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

如果我们想避免使用正则表达式替换功能,

我们可以通过

获得相同的结果
str.split(' ').filter(s => s).join(' ')
// var str = "    This    should  become   something          else   too . ";
// result is "This should become something else too ."

首先,用空格分割原始字符串,然后在数组中包含空字符串和单词。其次,过滤以仅保留单词,然后将所有单词与空格连接起来。