关于javascript:如何删除字符串中的重复空格?

How to remove duplicate white spaces in a string?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Removing whitespace from string in JavaScript

我使用了修饰功能来去除句子开头和结尾的空白。如果一个句子中的单词之间有太多的空格,有什么方法可以修剪吗?

例如

1
"abc                  def. fds                            sdff."

尝试

1
2
"abc                  def. fds                            sdff."
 .replace(/\s+/g,' ')

1
2
3
"abc                  def. fds                            sdff."
     .split(/\s+/)
     .join(' ');

或者使用这个allTrim字符串扩展

1
2
3
4
5
6
7
8
String.prototype.allTrim = String.prototype.allTrim ||
     function(){
        return this.replace(/\s+/g,' ')
                   .replace(/^\s+|\s+$/,'');
     };
//usage:
alert(' too much whitespace     here   right?  '.allTrim());
   //=>"too much whitespace here right?"


1
2
var str = 'asdads   adasd    adsd';
str = str.replace(/\s+/g, ' ');


我想你要找的是javascript的string.replace()方法。

如果要删除所有空白,请使用以下命令:

1
2
"abc def. fds sdff.".replace(/\s/g, '');
Returns:"abcdef.fdssdff."

如果只希望删除两个空格,请使用:

1
2
"abc   def.  fds      sdff.".replace(/\s\s/g, ' ');
Returns:"abc def. fds sdff."

如果要保留一段时间后的空间,请使用:

1
2
"abc def. fds   sdff.".replace(/[^.]\s/g, '')
Returns:"abcdef. fdssdff."

您可以使用此javascript将多个连续空格缩减为仅一个空格:

1
2
var str ="abc def.  fds    sdff.";
str = str.replace(/\s+/g,"");

如果你的意思不是多个连续空格,那么请在你的问题中澄清你的意思。


1
value.replace(" ","");

这应该可以做到,它只是将两个空格替换为一个,直到只有一个空格。


请参阅下面的代码部分,该部分在javascript中使用rejex来删除重复的空白。

1
2
3
4
5
6
7
8
9
function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   var obj = / +/g;
   temp = temp.replace(obj,"");
   if (temp =="") { temp =""; }
   return temp;
}