Javascript NodeJS,如何解析这样的字符串?

Javascript NodeJS,如何解析这样的字符串?,javascript,Javascript,我想解析以下字符串 3693,《有毒复仇者》(1985年),喜剧《恐怖》 到 3693, 《有毒复仇者》(1985年), 喜剧——恐怖 类似地,以下是 161944,《美国最后一个砖匠》(2001),戏剧 应该解析为 161944 美国最后一个砖匠(2001) 戏剧 我不能用逗号分割,因为“,”中有一个逗号 工作解决方案: LS05建议我使用“子字符串”,所以我这样做了,效果非常好。 给你 var pos1 = line.indexOf(','); var line = line

我想解析以下字符串

3693,《有毒复仇者》(1985年),喜剧《恐怖》

3693,
《有毒复仇者》(1985年),
喜剧——恐怖

类似地,以下是

161944,《美国最后一个砖匠》(2001),戏剧

应该解析为

161944

美国最后一个砖匠(2001)

戏剧

我不能用逗号分割,因为“,”中有一个逗号

工作解决方案: LS05建议我使用“子字符串”,所以我这样做了,效果非常好。 给你

    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:)

您可以使用CSV解析器,例如,或者如果您觉得不需要第三方库,您可以查看一下。

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

var str = '3693,"Toxic Avenger, The (1985)",Comedy|Horror';
console.log(str.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g).join("\n"));
(如果您想了解上述正则表达式的工作原理,请参阅学分)

就代码而言,我尝试拆分字符串,忽略字符串中的逗号,然后使用新行字符再次加入数组项
\n


这是什么类型的数据?也许您可以将第一部分和最后一部分分为子字符串,这样标题就会remain@alim哦,好吧,我的评论是基于你的示例数据:)@LS05实际上你的想法是最好的,效果很好。谢谢!:)@阿利姆好!也许您可以显示代码(或使用此策略的部分)以供解决方案的流程参考:)这将删除行尾的
<代码>加入(“,\n”)可能有帮助它有问题。无法解析此字符串“161944,美国最后一个砖匠(2001),戏剧”。如果没有“”,则删除字符串。我又添加了一个示例。请你检查一下好吗@alim您需要调整您的正则表达式示例,但是您需要调整它,以便它能够与任何类型的quotes@alim试试这个
console.log(str.match(/([“].*?[“]|[^”,\s]+)(?=\s*,|\s*$)/g)。join(“\n”);
(虽然不是100%确定它是否会破坏其他内容),这将接受单引号和双引号字符串