删除"不必要的"空间

时间:2015-09-02 21:34:53

标签: javascript regex replace

我想删除所有"不必要的"字符串中的空格。具体做法是:

"a b c d" => "a b c d" // spaces between two words are left in
" a b c d " => "a b c d" // spaces not between two words are removed
"a  b c   d" => "a b c d" // as are duplicate spaces

有没有正则表达式我可以放入String.replace()为我做这个?

5 个答案:

答案 0 :(得分:5)

使用trim()删除字符串末尾的空格,并使用regexp替换来替换中间的多个空格。

str = str.trim().replace(/\s{2,}/g, ' ');

答案 1 :(得分:3)

使用splitfilterjoin。这将拆分字符串,过滤掉额外的空数组条目,然后用空格重新加入它们:

variable.split(" ").filter(Boolean).join(" ");

答案 2 :(得分:3)

这也适用于支持ES 3的浏览器。

function deleteUnwantedWhitespace (searchstring) {
   searchstring = searchstring.trim().split(" ");
   var tempArray = [];
   for (var i = 0; i < searchstring.length; i++) {
      if (searchstring[i]) {
          tempArray.push(searchstring[i]);
      }
   }
   return tempArray.join(" ");
}

编辑:我刚刚得知String.prototype.trim是ES 5.1的一部分,所以这里是polyfill:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

答案 3 :(得分:1)

手动执行

var strArr = ["a b c d", " a b c d ", "a  b c   d"];

for (var i = 0; i < strArr.length; i++) {
  console.log(removeSpaces(strArr[i]));
}

function removeSpaces(str) {
  str = str.replace(/ +/g, ' ');
  str = str.trim();

  return str;
}

答案 4 :(得分:0)

完全可能。第一个正则表达式用一个空格替换1个或多个\s个字符。这包括空格,制表符和换行符。

str.replace(/\s+/g, ' ');

如果您只想要空格,请使用

str.replace(/ +/g, ' ');

这也是使用Boolean过滤器的more than 5x faster