如何解析包含多个URL且部分URL含逗号的字符串?
解决包含内部逗号的带引号URL字符串转数组问题
你有如下包含多个URL的字符串:
var str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"';
直接使用split(",")会因为部分URL内部包含逗号导致拆分失效,这里提供两种可行的解决方法:
正则表达式匹配法:通过正则匹配所有被双引号包裹的内容,忽略内部逗号
var str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"'; // 匹配所有双引号包裹的子串,再去除首尾引号 var urls = str.match(/"[^"]*"/g).map(item => item.slice(1, -1)); console.log(urls); // 输出: ["test.com", "test2.com", "test3.com/123,312", "test4.com/123,312"]说明:
/"[^"]*"/g会匹配所有以双引号开头和结尾、中间不含双引号的内容,刚好符合你的URL格式;slice(1, -1)用来去掉每个子串首尾的双引号,比replace更简洁。JSON解析法:将字符串转为合法JSON数组格式后解析
var str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"'; // 用方括号包裹原字符串,转为JSON数组格式 var urls = JSON.parse(`[${str}]`); console.log(urls); // 输出: ["test.com", "test2.com", "test3.com/123,312", "test4.com/123,312"]说明:这种方法更高效简洁,只要原字符串的双引号格式正确(没有未闭合的引号),就能直接得到目标数组。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

