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

Bil*_*ash 8 javascript split node.js

我的阵列:

var str=['data1,data2 '];
Run Code Online (Sandbox Code Playgroud)

我用过:

var arr = str.split(",");
Run Code Online (Sandbox Code Playgroud)

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

我的输出将是:

arr= data1,data2
// or
arr[0]=data1;
arr[1]=data2;
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题 ?

dav*_*rad 12

你应该做这个 :

var arr = str.toString().split(",");
Run Code Online (Sandbox Code Playgroud)

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


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

var str = [];
var str = ['data1,data2','data3,data4'];
var str = [someVariable]; 
Run Code Online (Sandbox Code Playgroud)

str[0].split(",")如果str持有一个空数组,将会完全失败,因为某些原因不能持有String.prototype或者如果str持有多个字符串则会给出不满意的结果.使用str[0].split(",")盲目信任,str总是会完全保留1个字符串而绝不是其他不好的做法.toString()由数字,数组,对象,布尔值,日期甚至函数支持; str[0].split()具有巨大的潜力,可以在范围内引发错误并停止进一步执行,并使整个应用程序崩溃.

如果你真的,真的想使用str[0].split()那么至少做一些最小类型检查:

var arr;
if (typeof str[0] == 'string') {
    arr = str[0].split(',')
} else {
    arr = [];
}
Run Code Online (Sandbox Code Playgroud)


Ser*_*gio 5

如果你的起点是array一个string内部.这应该工作:

var arr = str[0].split(",");
Run Code Online (Sandbox Code Playgroud)

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

var str = 'data1,data2';
Run Code Online (Sandbox Code Playgroud)

如果数组中有更多元素,则需要使用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);
Run Code Online (Sandbox Code Playgroud)

  • @Jonathan - 我根本不认为`Array.toString()`是一个"脏的解决方法".事实上,这是一种安全,可靠的方法.我认为为什么`str [0] .split(",")`有可能使整个应用程序崩溃是很明显的.更新了我的答案来解释原因. (2认同)