如何从javascript中的字符串中删除特定的空格块?

时间:2013-11-15 00:30:07

标签: javascript regex string

我需要像这样调整一个字符串:

应调整事项的案例:

Case a: "        ", becomes ""
Case b: "z       ", becomes "z"
Case c: "        z", becomes "z"

不应调整事情的案例:

案例d:“z”,保持不变

Case e: "zzz zz          zzz", stays the same

我如何在javascript中实现这一目标?

4 个答案:

答案 0 :(得分:3)

您可以在这种情况下使用String.trim()。它从字符串中删除前导和尾随空格。许多现代浏览器都支持这种方法,它允许你重写上面更短的内容。

mystring = mystring.trim()

对于不支持String.trim()的浏览器,请使用正则表达式创建自己的方法。

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

或者,对于大多数直接使用它的情况也会执行相同的操作。

mystring.replace(/^\s+|\s+$/g, '')

请参阅live demo

答案 1 :(得分:3)

您应该使用ES5 .trim()方法:

"        ".trim(); // "";
"z       ".trim(); // "z";
"       z".trim(); // "z";
"   z    ".trim(); // "z";
"zzz zz          zzz".trim(); // "zzz zz          zzz";

为了与旧浏览器兼容,您可以在脚本的开头添加以下内容:

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

答案 2 :(得分:3)

Xander的启发,试试这个,匹配除变量e:

以外的所有内容
return s.replace(/^(\s+$|\w{1}\s+$|\s+\w{1}$|\s+\w{1}\s+$)/i, "Bingo");

这是Demo,希望这可以帮到你:P

答案 3 :(得分:1)

足以让你使用trim功能;但string.trim();不适用于所有浏览器......

试试这个:

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

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

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

String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};

由于新浏览器(IE9 +)已经实现了trim(),因此如果Prototype-Object上尚未提供trim(),则应该只实现Object.defineProperty(覆盖它是一个巨大的性能损失)。扩展Native Objects时通常建议这样做!请注意,除非您使用ES5 if (!String.prototype.trim) { //code for trim }

,否则添加的属性是可枚举的
{{1}}