给定一个这样的字符串:

"The dog      has a long   tail, and it     is RED!"

什么样的jQuery或JavaScript魔法可以用来保持空间只有一个最大空间?

目标:

"The dog has a long tail, and it is RED!"

当前回答

我知道我迟到了,但我发现了一个很好的解决方案。

下面就是:

var myStr = myStr.replace(/[ ][ ]*/g, ' ');

其他回答

var myregexp = new RegExp(/ {2,}/g);

str = str.replace(myregexp,' ');

为了获得更多的控制,您可以使用replace回调来处理该值。

value = "tags:HUNT  tags:HUNT         tags:HUNT  tags:HUNT"
value.replace(new RegExp(`(?:\\s+)(?:tags)`, 'g'), $1 => ` ${$1.trim()}`)
//"tags:HUNT tags:HUNT tags:HUNT tags:HUNT"

更健壮的:

function trim(word)
{
    word = word.replace(/[^\x21-\x7E]+/g, ' '); // change non-printing chars to spaces
    return word.replace(/^\s+|\s+$/g, '');      // remove leading/trailing spaces
}

如果你不想使用replace(替换字符串中的空格而不使用replace javascript),这里有一个替代解决方案。

var str=“狗有一条长尾巴,而且是红色的!”; var = / \ s规则{1,}/ g; STR = STR .split(规则)。加入(" "); document . write (str);

这个脚本删除了单词和修饰之间的任何空白(多个空格,制表符,返回值等):

// Trims & replaces any wihtespacing to single space between words
String.prototype.clearExtraSpace = function(){
  var _trimLeft  = /^\s+/,
      _trimRight = /\s+$/,
      _multiple  = /\s+/g;

  return this.replace(_trimLeft, '').replace(_trimRight, '').replace(_multiple, ' ');
};