Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从/r/listenToThis为IFTTT小程序解析歌曲标题_Javascript_String_Typescript_Parsing_Ifttt - Fatal编程技术网

Javascript 从/r/listenToThis为IFTTT小程序解析歌曲标题

Javascript 从/r/listenToThis为IFTTT小程序解析歌曲标题,javascript,string,typescript,parsing,ifttt,Javascript,String,Typescript,Parsing,Ifttt,我有一系列的歌曲标题,来自,看起来像这样: [ "Lophelia -- MYTCH [Acoustic Prog-Rock/Jazz] (2019)", "Julia Jacklin - Pressure to Party [Rock] (2019)", "The Homeless Gospel Choir - I'm Going Home [Folk-Punk] (2019) cover of Pat the Bunny | A Fistful of Vinyl", "Lea

我有一系列的歌曲标题,来自,看起来像这样:

[
  "Lophelia -- MYTCH [Acoustic Prog-Rock/Jazz] (2019)",
  "Julia Jacklin - Pressure to Party [Rock] (2019)",
  "The Homeless Gospel Choir - I'm Going Home [Folk-Punk] (2019) cover of Pat the Bunny | A Fistful of Vinyl",
  "Lea Salonga and Simon Bowman - The last night of the world [musical] (1990)",
  "$uicideboy$ - Death",
  "SNFU -- Joni Mitchell Tapes [Punk/Alternative] (1993)",
  "Blab - afdosafhsd (2000)",
  "Something strange and badly formatted without any artist [Classical]",
  "シロとクロ「ミッドナイトにグッドナイト」(Goodnight to Midnight - Shirotokuro) - (Official Music Video) [Indie/Alternative]",
  "Victor Love - Irrationality (feat. Spiritual Front) [Industrial Rock/Cyberpunk]"
  ...
]
我试图从中解析标题和艺术家,但我真的很难用正则表达式

我试着用它来分割,但它真的很烦人,只有得到艺术家之后

我也尝试过使用正则表达式,但我不能真正让某些东西正常工作。
这是我为艺术家准备的:/?要达到预期效果,请使用下面的选项 1.对于标题,从'-'额外空格的indexOf位置使用substr并检查'[',如果没有'['索引,则使用子字符串长度

v.substring(v.indexOf('- ')+1, v.indexOf(' [') !== -1? v.indexOf(' [') : v.length).trim()
对于美工人员,使用位置为0且索引为“-”的substr

v、 substr0,v.indexOf'-'.trim}

工作守则供参考

设arr=[ Lophelia-MYTCH【声学摇滚/爵士乐进展】2019年, 朱莉娅·杰克林-2019年对派对[摇滚乐]的压力, 无家可归的福音唱诗班-我要回家[民间朋克]2019年兔子帕特的封面|一把乙烯基, Lea Salonga和Simon Bowman-1990年世界[音乐剧]的最后一夜, $uicideboy$-死亡, SNFU-Joni Mitchell录音带[朋克/另类]1993年, Blab-AFDOSAFFHSD 2000, 没有任何艺术家的奇怪且格式不好的东西[古典] ] 让结果=arr.reduceac,v=>{ 加速推{ 标题:v.substring v.indexOf'-'+1,v.indexOf'['!=-1?v.indexOf'[':v.indexOf''!=-1?v.indexOf'':v.length.trim, 艺术家:v.substr0,v.indexOf'-'.trim} 返回acc }, []
console.logresult您可以执行以下操作:

[
  "Lophelia -- MYTCH [Acoustic Prog-Rock/Jazz] (2019)",
  "Julia Jacklin - Pressure to Party [Rock] (2019)",
  "The Homeless Gospel Choir - I'm Going Home [Folk-Punk] (2019) cover of Pat the Bunny | A Fistful of Vinyl",
  "Lea Salonga and Simon Bowman - The last night of the world [musical] (1990)",
  "$uicideboy$ - Death",
  "SNFU -- Joni Mitchell Tapes [Punk/Alternative] (1993)",
  "Blab - afdosafhsd (2000)",
  "Something strange and badly formatted without any artist [Classical]",
  "シロとクロ「ミッドナイトにグッドナイト」(Goodnight to Midnight - Shirotokuro) - (Official Music Video) [Indie/Alternative]",
  "Victor Love - Irrationality (feat. Spiritual Front) [Industrial Rock/Cyberpunk]"
  ...
]
康斯特歌曲=[ Lophelia-MYTCH【声学摇滚/爵士乐进展】2019年, 朱莉娅·杰克林-2019年对派对[摇滚乐]的压力, 无家可归的福音唱诗班-我要回家[民间朋克]2019年兔子帕特的封面|一把乙烯基, Lea Salonga和Simon Bowman-1990年世界[音乐剧]的最后一夜, Lophelia-MYTCH[摇滚乐/爵士乐声学节目], 死亡-$uicideboy$, SNFU-Joni Mitchell录音带[朋克/另类]1993年, 标题-Aritst 2000, 没有任何艺术家[古典]的奇怪和糟糕的格式, ]; 常量trailingRgx=/\s*\[^\]+\]\\]\\\\\\\\\\\\\\d+\.*$/; const details=songs.mapsong=>{ const splitted=song.split/\s+\-+\s++; let title=splited[0]; 让艺术家=分裂[1]; 如果拆分。长度>=2{ 艺术家=艺术家.replacetrailingRgx; }否则{ title=title.replacetrailingRgx; } 返回{ 标题 艺术家 } };
logdetails;您可以使用这个正则表达式来捕获您在文章中描述的标题和艺术家部分

^([^-[\]()\n]+)-* *([^[\]()\n]*)
故意在PCRE flavor中显示,以保留组颜色以获得视觉吸引力,但它也在Javascript flavor中工作

JS代码演示

const songs=[Lophelia-MYTCH[原声摇滚/爵士乐]2019, 朱莉娅·杰克林-2019年对派对[摇滚乐]的压力, 无家可归的福音唱诗班-我要回家[民间朋克]2019年兔子帕特的封面|一把乙烯基, Lea Salonga和Simon Bowman-1990年世界[音乐剧]的最后一夜, Lophelia-MYTCH[摇滚乐/爵士乐声学节目], 死亡-$uicideboy$, SNFU-Joni Mitchell录音带[朋克/另类]1993年, 标题-Aritst 2000, 一些奇怪的东西,没有任何艺术家[古典]] songs.forEachsong=>{ m=/^[^-[\]\n]+-***[^[\]\n]*/.execsong console.logTitle:+m[1]+,艺术家:+m[2]
}使用对象会更好吗?你的数据来自哪里?这个过程的一部分可能是清理数据,这就像数据科学家90%的工作一样。你说我希望破折号之前的一切都是标题,但看起来有些行是从艺术家开始的。例如:朱莉娅·杰克林-派对的压力是朱莉娅·贾克klin标题?派对压力在这里更像是一个标题。试着从自然语言中分解每行的结构开始…一个条目是一首歌的标题,后面跟着一个或两个破折号,后面跟着一个艺术家,可选的是genrein括号,…任何条目都只与其他条目一起出现吗?-为什么是一个或两个破折号s?是否有一些意义可以通过-vs-来区分?一旦结构被清楚地表述,通常很容易将其转换为正则表达式。@MarkMeyer你是对的,我没有注意到。这改变了很多东西。[声学程序摇滚/爵士乐]2019不是艺术家名字的一部分,我已经试过了。你知道如何解析艺术家吗?你能分享预期的标题和艺术家数组吗?我为这个例子添加了预期的结果。@Halhex,我已经更新了我的答案,希望它对你有效:这有效,除了Blab的歌曲。我想知道为什么使用子字符串而不是regex?它更适合这种问题还是只是个人偏好?