node js,如何解析这样的字符串?

时间:2017-02-22 09:31:44

标签: javascript

我想解析以下字符串

  3693,“Toxic Avenger,The(1985)”,Comedy | Horror

  

3693,
  “Toxic Avenger,The(1985)”,
  喜剧|。恐怖

同样,以下

  

161944,美国最后一位制砖师(2001年),戏剧

应解析为

  

161944

     

美国最后一位制砖厂(2001年)

     

剧情

我不能通过逗号分割来实现,因为“,”中有一个逗号。

工作解决方案: LS05建议我使用“substring”,所以我做了它并且它工作得很完美。 在这里。

    var pos1 = line.indexOf(',');
    var line = line.substring(pos1+1); 

    pos1 = line.indexOf(',');
    pos2 = line.lastIndexOf(',');

    let movie_id = line.substring(0,pos1);
    let movie_tag = line.substring(pos1+1,pos2);
    let movie_timespan = line.substring(pos2+1);

感谢LS05:)

2 个答案:

答案 0 :(得分:6)

您可以使用正则表达式来解析您的字符串,该字符串将排除引号内的逗号

var str = '3693,"Toxic Avenger, The (1985)",Comedy|Horror';
console.log(str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g).join("\n"));

Demo(如果您想了解上述正则表达式的工作原理,请参阅学分)

就代码而言,我尝试拆分字符串,忽略字符串中的逗号,稍后我们再次使用换行符\n

连接数组项

Credits for Regex

答案 1 :(得分:2)

您可以使用papa parse之类的CSV解析器,或者如果您认为不需要第三方库,则可以查看this function