我想删除字符串之前的空格,并将单词之间的所有空格替换为空格。如果在字符串之后有空格,请删除所有空格。我怎样才能做到这一点?删除字符串中的空格
如:
" My name is Eddy " -> "My name is Eddy "
" My name is Eddy" -> "My name is Eddy"
我想删除字符串之前的空格,并将单词之间的所有空格替换为空格。如果在字符串之后有空格,请删除所有空格。我怎样才能做到这一点?删除字符串中的空格
如:
" My name is Eddy " -> "My name is Eddy "
" My name is Eddy" -> "My name is Eddy"
这是你想要的吗?
function removeSpace(string) {
return string.replace(/\s*([^\s]+\s?)\s*/g, '$1');
}
这里的jsfiddle:http://jsfiddle.net/bobkhin/5EPC8/
对我而言真的很感谢! – Eddy
试试这个
var str=" My name is Eddy ";
alert(str.trim());
试试这个代码也
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
}
}
您可以使用String.prototype.trim()
上现代浏览器(见compatibility):
" My name is Eddy ".trim()
将返回
"My name is Eddy"
在IE8可以使用填充工具建议在MDN page:
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/gm, '');
};
}
替换的空间多次出现(\s+
)用单个空间' '
与String.replace
方法,然后修剪剩余的左边t并用String.trim
方法正确。
" My name is Eddy ".replace(/\s+/g,' ').trim()
trim
适用于FF 3.5+,IE 9+,Safari 9+。
有很多方法可以做到这一点,但我觉得最简单的三个个人替代明白:
function cleanup(str) {
return str
.replace(/ +/g, ' ')
.replace(/^ /, '')
.replace(/ $/, '');
}
console.log(
"'" +
cleanup(" My name is Eddy ") +
"'"
);
日志:
'My name is Eddy'
这是很旧的浏览器以及新的兼容。
编辑:所以你想删除所有前导空格,但是如果有尾随空格要保留一个尾随空格,是吗?这不是你描述问题的方式。
如果你看一下cleanup
功能我张贴,它应该是显而易见如何修复它不删除尾随空格:
function cleanup(str) {
return str
.replace(/ +/g, ' ')
.replace(/^ /, '');
}
console.log(
"'" +
cleanup(" My name is Eddy ") +
"'"
);
日志:
'My name is Eddy '
是否修剪是不是为你工作? [演示](http://jsfiddle.net/HCnnY/)。另外[参考](http://www.sitepoint.com/trimming-strings-in-javascript/) – Roopendra
为什么在第一个例子中'Eddy'之后的空间不被删除? – Bergi
@Bergi它用于我的自动完成。我只是想将重复的查询删除到服务器。 – Eddy