我需要像这样调整一个字符串:
应调整事项的案例:
Case a: " ", becomes ""
Case b: "z ", becomes "z"
Case c: " z", becomes "z"
不应调整事情的案例:
案例d:“z”,保持不变
Case e: "zzz zz zzz", stays the same
我如何在javascript中实现这一目标?
答案 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}}