我想删除字符串之前的空格,并将单词之间的所有空格替换为空格。如果字符串后面有空格,请删除空格中的所有空格。我怎么能这样做?
如:
" My name is Eddy " -> "My name is Eddy "
" My name is Eddy" -> "My name is Eddy"
答案 0 :(得分:2)
使用String.replace
方法将多个空格(\s+
)替换为单个空格' '
,然后使用String.trim
方法从左侧和右侧修剪剩余空格
" My name is Eddy ".replace(/\s+/g,' ').trim()
trim
适用于FF 3.5 +,IE 9 +,Safari 9 +。
答案 1 :(得分:2)
这是你想要的?
function removeSpace(string) {
return string.replace(/\s*([^\s]+\s?)\s*/g, '$1');
}
这里的jsfiddle:http://jsfiddle.net/bobkhin/5EPC8/
答案 2 :(得分:1)
试试这个
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, '');
}
}
答案 3 :(得分:1)
您可以在现代浏览器上使用String.prototype.trim()
(请参阅compatibility):
" My name is Eddy ".trim()
将返回
"My name is Eddy"
在IE8上,您可以使用MDN page中建议的polyfill:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/gm, '');
};
}
答案 4 :(得分:1)
有很多方法可以做到这一点,但我发现最容易理解的是三个单独的替换:
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 '