我想使用.split()
从逗号分隔的字符串生成数组,但我需要摆脱空格。
var a = "one, two".split(",");
a ==> ["one", " two"]
a[1].trim() ==> "two"
$.each(a, function(i,v){v.trim()}) ==> ["one", " two"]
我对从数组中的第二个字符串修剪空格缺少什么,是否有更好的方法从逗号分隔的字符串中修剪空格?
答案 0 :(得分:4)
您的问题是您正在检索值v.trim()
,但却无法使用它。替换这部分:
$.each(a, function(i,v){v.trim()})
有了这个:
for(var i=0; i<a.length; i++) {
a[i] = a[i].trim();
}
它应该可以正常工作。
答案 1 :(得分:2)
用正则表达式分开:
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*/);
答案 2 :(得分:2)
trim()
会返回修剪过的字符串,但您的原文不会被修改,因此您必须为其分配。
答案 3 :(得分:1)
你的内部函数实际上并没有返回值。正如其他人所提到的,trim
返回字符串的副本,其中删除了前导和尾随空格。此外,each
根本不使用函数的返回值,因此您不能使用它来替换元素。你需要
$.map(a, function(v){return v.trim();});
为此工作。 (分配给v将不起作用,因为v只是一个局部变量。)
答案 4 :(得分:1)
如果您仍然想使用jquery,则每个都这样做:
$.each(a,function(i,v){
a[i] = v.trim();
}