0

我想用.split()逗号分隔的字符串生成一个数组,但我需要去掉空格。

var a = "one, two".split(",");

a  ==>  ["one", " two"]

a[1].trim() ==> "two"

$.each(a, function(i,v){v.trim()})  ==> ["one", " two"]

从数组中的第二个字符串中修剪空格我缺少什么,有没有更好的方法从逗号分隔的字符串中修剪空格?

4

5 回答 5

4

您的问题是您正在检索 value v.trim(),但没​​有做任何事情。替换这部分:

$.each(a, function(i,v){v.trim()})

有了这个:

for(var i=0; i<a.length; i++) {
    a[i] = a[i].trim();
}

它应该工作得很好。

于 2013-06-19T00:37:23.810 回答
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*/);
于 2013-06-19T00:35:27.173 回答
2

trim()将返回一个修剪过的字符串,但您的原始字符串不会被修改,因此您必须分配给它。

于 2013-06-19T00:37:42.437 回答
1

你的内部函数实际上并没有返回一个值。正如其他人所提到的,trim返回删除了前导和尾随空格的字符串副本。此外,each根本不使用函数的返回值,因此您不能使用它来替换元素。你需要

$.map(a, function(v){return v.trim();});

为此工作。(分配给 v 不起作用,因为 v 只是一个局部变量。)

于 2013-06-19T00:40:07.523 回答
1

如果您仍然想使用 jquery 的 each 这样做:

$.each(a,function(i,v){
  a[i] = v.trim();
}
于 2013-06-19T01:00:51.207 回答