我有额外的空格字符字符串。每次有一个以上的空白,我希望它是只有一个。我如何使用JavaScript做到这一点?


当前回答

我知道我不应该在一个问题上使用巫术,但考虑到问题的细节,我通常会将其扩展为:

我想用一个空格替换字符串中多次出现的空白 …和…我不希望在字符串的开头或结尾出现空格(trim)

为此,我使用了如下代码(第一个regexp上的括号只是为了使代码更具可读性……除非你熟悉regexp,否则它会让你很痛苦):

s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');

这样做的原因是string -object上的方法返回一个字符串对象,你可以在这个对象上调用另一个方法(就像jQuery和其他一些库一样)。如果你想在一个对象上连续执行多个方法,这是一种更紧凑的编码方式。

其他回答

你可以扩充String以方法的形式实现这些行为,比如:

String.prototype.killWhiteSpace = function() {
    return this.replace(/\s/g, '');
};

String.prototype.reduceWhiteSpace = function() {
    return this.replace(/\s+/g, ' ');
};

这现在允许你使用以下优雅的形式来生成你想要的字符串:

"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra        whitespaces".reduceWhiteSpace();

使用带有replace函数的正则表达式可以做到这一点:

string.replace(/\s/g, "")

var x = "测试测试测试"。分割(" "). join (" "); 警报(x);

我知道我不应该在一个问题上使用巫术,但考虑到问题的细节,我通常会将其扩展为:

我想用一个空格替换字符串中多次出现的空白 …和…我不希望在字符串的开头或结尾出现空格(trim)

为此,我使用了如下代码(第一个regexp上的括号只是为了使代码更具可读性……除非你熟悉regexp,否则它会让你很痛苦):

s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');

这样做的原因是string -object上的方法返回一个字符串对象,你可以在这个对象上调用另一个方法(就像jQuery和其他一些库一样)。如果你想在一个对象上连续执行多个方法,这是一种更紧凑的编码方式。

这个怎么样?

“我的测试字符串\t\t与疯狂的东西很酷”。替换(/\s{2,9999}|\t/g, ' ')

输出"my test string with crazy stuff is cool "

这个也可以去掉任何标签