2014-02-11 154 views
1

我想删除字符串之前的空格,并将单词之间的所有空格替换为空格。如果在字符串之后有空格,请删除所有空格。我怎样才能做到这一点?删除字符串中的空格

如:

"  My   name is Eddy  " -> "My name is Eddy " 

"  My   name is Eddy" -> "My name is Eddy" 
+0

是否修剪是不是为你工作? [演示](http://jsfiddle.net/HCnnY/)。另外[参考](http://www.sitepoint.com/trimming-strings-in-javascript/) – Roopendra

+0

为什么在第一个例子中'Eddy'之后的空间不被删除? – Bergi

+0

@Bergi它用于我的自动完成。我只是想将重复的查询删除到服务器。 – Eddy

回答

1

试试这个

var str=" My name is Eddy "; 
alert(str.trim()); 

DEMO

试试这个代码也

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

我试过,但得到错误“修剪不是功能” – Eddy

+1

@ user3296015:[使用现代浏览器](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/修剪):-) – Bergi

+0

请检查我的演示,以更好地了解 – Amit

1

您可以使用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, ''); 
    }; 
} 
+1

JS中没有trim()函数。 – Eddy

+0

我的不好,我只是编辑了我的答案。 – fiddler

+0

在我的IE8上,没有修剪功能:( – Eddy

2

替换的空间多次出现(\s+)用单个空间' 'String.replace方法,然后修剪剩余的左边t并用String.trim方法正确。

"  My   name is Eddy  ".replace(/\s+/g,' ').trim() 

trim适用于FF 3.5+,IE 9+,Safari 9+。

+0

它不适用于第二种情况:( – Eddy

+0

@ user3296015您确定吗?适用于我的Chrome ... – zamnuts

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 ' 
+0

它适用于第二种情况,但不是第一种情况:( – Eddy

+0

@ user3296015:只需省略第三种替换 – Bergi

+0

现在可以使用:)谢谢! – Eddy