20

我有一些看起来像这样的文本 -

"    tushar is a good      boy     "

使用 javascript 我想删除字符串中所有多余的空格。

结果字符串不应该有多个空格,而是只有一个。此外,开头和结尾根本不应该有任何空格。所以我的最终输出应该是这样的 -

"tushar is a good boy"

我目前正在使用以下代码-

str.replace(/(\s\s\s*)/g, ' ')

这显然失败了,因为它不处理字符串开头和结尾的空格。

4

7 回答 7

31

这可以在一次String#replace调用中完成:

var repl = str.replace(/^\s+|\s+$|\s+(?=\s)/g, "");

// gives: "tushar is a good boy"
于 2013-08-05T19:20:46.250 回答
7

这很好用:

function normalizeWS(s) {
    s = s.match(/\S+/g);
    return s ? s.join(' ') : '';
}
  • 修剪前导空格
  • 修剪尾随空格
  • 将制表符、换行符和多个空格规范化为单个常规空格
于 2013-08-05T19:29:03.317 回答
5

试试这个:

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

如果你没有trim添加这个。

在 JavaScript 中修剪字符串?

于 2013-08-05T19:10:56.857 回答
3

由于每个人都在抱怨.trim(),您可以使用以下内容:

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

JSFiddle

于 2013-08-05T19:25:37.040 回答
1

此正则表达式可能有助于删除空格

/^\s+|\s+$/g
于 2021-07-04T06:57:55.490 回答
-1

尝试:

str.replace(/^\s+|\s+$/, '')
   .replace(/\s+/, ' ');
于 2013-08-05T19:13:57.017 回答
-1

尝试

var str = "    tushar is a good      boy     ";
str = str.replace(/^\s+|\s+$/g,'').replace(/(\s\s\s*)/g, ' ');

第一个替换是删除字符串的前导和尾随空格。

于 2013-08-05T19:25:36.957 回答