第04集$https://youku.cdn1-okzy.com/share/a8bfe36fa885d46814378912f268a8a1$$$第01集$https://youku.cdn1-okzy.com/20200406/14933_31886b53/index.m3u8#第02集$https://youku.cdn1-okzy.com/20200406/14934_87bdd380/index.m3u8#第03集$https://youku.cdn1-okzy.com/20200406/14935_315c0332/index.m3u8#第04集$https://youku.cdn1-okzy.com/20200406/14958_91ca7e39/index.m3u8
请问这样的字符串,如何提取出对象类型:第01集: ‘http://xxxxxx’
正则表达式不会,但是利用JS想不出办法解决?
你这个不太规律吧,第一集和第二集的分割方式无法做到统一。如果都像第二级、第三集一样的分隔符就行。
var a = str.split('#');
var b = [];
for(var i = 0;i<a.length;i++){
b.push(a[i].split('$'))
}
这个b最后就是一个二维数组,每个里面子数组里面的第一个都是第几集,第二个都是播放地址。你可以试一下, 还有就是对象的字段名不能有汉字。满足不了你的{第一集:xxxxxxxx}
可以满足给出的例子
let orgStr = '第04集$https://youku.cdn1-okzy.com/share/a8bfe36fa885d46814378912f268a8a1$$$第01集$https://youku.cdn1-okzy.com/20200406/14933_31886b53/index.m3u8#第02集$https://youku.cdn1-okzy.com/20200406/14934_87bdd380/index.m3u8#第03集$https://youku.cdn1-okzy.com/20200406/14935_315c0332/index.m3u8#第04集$https://youku.cdn1-okzy.com/20200406/14958_91ca7e39/index.m3u8'
let regex = new RegExp(/第\d+集/g)
let urlArray = orgStr.split(regex)
let nameArray: any = orgStr.match(regex)
let resultArray: any = []
nameArray.forEach((item,index) => {
resultArray.push(
{
name:item,
url:urlArray[index + 1]
}
)
})
console.log(resultArray)