我想用.split()
逗号分隔的字符串生成一个数组,但我需要去掉空格。
var a = "one, two".split(",");
a ==> ["one", " two"]
a[1].trim() ==> "two"
$.each(a, function(i,v){v.trim()}) ==> ["one", " two"]
从数组中的第二个字符串中修剪空格我缺少什么,有没有更好的方法从逗号分隔的字符串中修剪空格?
我想用.split()
逗号分隔的字符串生成一个数组,但我需要去掉空格。
var a = "one, two".split(",");
a ==> ["one", " two"]
a[1].trim() ==> "two"
$.each(a, function(i,v){v.trim()}) ==> ["one", " two"]
从数组中的第二个字符串中修剪空格我缺少什么,有没有更好的方法从逗号分隔的字符串中修剪空格?
您的问题是您正在检索 value v.trim()
,但没有做任何事情。替换这部分:
$.each(a, function(i,v){v.trim()})
有了这个:
for(var i=0; i<a.length; i++) {
a[i] = a[i].trim();
}
它应该工作得很好。
只需使用正则表达式拆分:
var a = "one, two, three , four".split(/\s*,\s*/);
console.log(a); //=> ["one", "two", "three", "four"]
如果开头或结尾有空格,则可以trim
先使用:
a = " one, two, three , four ".trim().split(/\s*,\s*/);
trim()
将返回一个修剪过的字符串,但您的原始字符串不会被修改,因此您必须分配给它。
你的内部函数实际上并没有返回一个值。正如其他人所提到的,trim
返回删除了前导和尾随空格的字符串副本。此外,each
根本不使用函数的返回值,因此您不能使用它来替换元素。你需要
$.map(a, function(v){return v.trim();});
为此工作。(分配给 v 不起作用,因为 v 只是一个局部变量。)
如果您仍然想使用 jquery 的 each 这样做:
$.each(a,function(i,v){
a[i] = v.trim();
}