如何通过Node Js拆分字符串?

时间:2014-02-03 20:54:02

标签: javascript node.js split

我的阵列:

var str=['data1,data2 '];

我用过:

var arr = str.split(",");

但是显示了一个错误。 TypeError:对象data1,data2没有方法'split'。我该如何解决这个问题。

我的输出将是:

arr= data1,data2
// or
arr[0]=data1;
arr[1]=data2;

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:12)

你应该这样做:

var arr = str.toString().split(",");

TypeError:对象data1,data2没有方法'split'”表示该变量不被视为字符串。因此,您必须对其进行类型转换。


更新08.10.2015 我注意到有人认为上面的答案是“脏的解决方法”,令人惊讶的是这条评论被赞成。实际上它完全相反 - 使用str[0].split(",")作为3(!)其他建议是真正的“脏解决方法”。为什么?考虑在这些情况下会发生什么:

var str = [];
var str = ['data1,data2','data3,data4'];
var str = [someVariable]; 
{p> str[0].split(",")将尽快完全失败str持有一个空数组,由于某种原因不会持有String.prototype或者如果str持有的数量超过str[0].split(",")则会给出不满意的结果一弦。使用str盲目地相信toString()总是会完全保留1个字符串而绝不是其他不好的做法。 str[0].split()由数字,数组,对象,布尔值,日期甚至函数支持; str[0].split()极有可能引发错误并阻止在范围内进一步执行,并使整个应用程序崩溃。

如果你真的,真的想使用var arr; if (typeof str[0] == 'string') { arr = str[0].split(',') } else { arr = []; } ,那么至少要进行一些最小类型检查:

{{1}}

答案 1 :(得分:5)

如果你的起点是array,里面有string。这应该有效:

var arr = str[0].split(",");

否则,您应该以字符串作为代码的起点,以便按预期工作:

var str = 'data1,data2';

如果数组中有更多元素,则需要使用for循环迭代它们。

编辑以添加其他案例:

如果你在该数组中有多个字符串,那么你应该更加小心并做一些这样的事情:

var str = ['data1,data2 ', ' data3, data4 ']; // notice these strings have many spaces in different places
var longString = str.join(',');
var array = longString.split(',').map(s => s.trim()).filter(Boolean); // removing spaces from start and end of strings, and eventually removing empty positions

console.log(array);

答案 2 :(得分:3)

正如你所说,str是一个数组(有一个元素)。如果要拆分数组中包含的字符串,则必须首先访问数组:

var arr = str[0].split(",");

答案 3 :(得分:-1)

让我们说我们有两个日期:

date1:​​1989年1月17日

date2:20/02/2000

如果我们想要比较它们只需拆分字符串并像这样比较

var date1= date1.toString().split("/");

var date2= date2.toString().split("/");

var a = parseInt(date1[2] + date1[1] + date1[0]);

var b = parseInt(date2[2] + date2[1] + date2[0]);

if(a< b){

提醒(" date2大于date1")}

}  否则如果(a> b){

警告(" date1大于date2")

} 否则{

警告("日期1和日期2等于");

}