例如,我有一个包含多个URL的字符串。
var str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"'
我想用这个字符串做一个数组。首先,我尝试使用split(","),但有些URL有","。有什么好办法把这些分开吗?
split(",")
","
6tqwzwtp1#
你可以使用带有lookbehindAssert的正则表达式:
var str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"' console.log(str.match(/(?<=")[^,][^"]+/g));
你也可以直接拆分字符串:
const str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"'; console.log(str.slice(1, -1).split('","'));
还有一个基准:
` Cycles: 1000000 / Chrome/117 -------------------------------------------------- Alexander slice 1.0x | 101 104 105 105 114 Chris Barr 1.3x | 129 132 134 139 140 Alexander regex 1.3x | 131 136 138 140 141 vishal_g 3.2x | 322 328 333 334 339 -------------------------------------------------- https://github.com/silentmantra/benchmark `
<script benchmark data-count="1000000"> const str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"' // @benchmark vishal_g str.match(/"(.*?)"/g).map(function(url) { return url.replace(/"/g, ''); }); // @benchmark Chris Barr str.split(`","`).map(s => s.replace(/"/g, '')); // @benchmark Alexander regex str.match(/(?<=")[^,][^"]+/g); // @benchmark Alexander slice str.slice(1, -1).split('","'); </script> <script src="https://cdn.jsdelivr.net/gh/silentmantra/benchmark/loader.js"></script>
nfs0ujit2#
如果字符串被","(一个引号,一个逗号和一个引号)分开,那么我们就有了所有可以保持内部逗号的URL。然后我们只需要删除数组中每个字符串中剩下的引号
var str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"'; var urls = str.split(`","`).map(s => s.replace(/"/g, '')); console.log(urls);
fruv7luv3#
也许只是从引号中提取URL?你可以通过regex str.match(/".*?"/g).来实现。或者只做str.split(",).map(url => url.substring(1))。map部分仅删除前导引号。
str.match(/".*?"/g).
str.split(
).map(url => url.substring(1))
map
u0njafvf4#
在这种情况下,您可以使用正则表达式来解析字符串并提取URL。以下是如何使用JavaScript实现这一点:
var str = '"test.com","test2.com","test3.com/123,312","test4.com/123,312"'; var urls = str.match(/"(.*?)"/g).map(function(url) { return url.replace(/"/g, ''); }); console.log(urls);
说明:str.match(/"(.*?)"/g)使用正则表达式匹配双引号中的文本,并返回匹配字符串数组。.map(function(url) { return url.replace(/"/g, ''); })删除每个匹配URL的双引号。urls数组将包含提取的URL。这段代码应该可以处理你的示例字符串,也可以处理带逗号的URL。
str.match(/"(.*?)"/g)
.map(function(url) { return url.replace(/"/g, ''); })
urls
4条答案
按热度按时间6tqwzwtp1#
你可以使用带有lookbehindAssert的正则表达式:
你也可以直接拆分字符串:
还有一个基准:
nfs0ujit2#
如果字符串被
","
(一个引号,一个逗号和一个引号)分开,那么我们就有了所有可以保持内部逗号的URL。然后我们只需要删除数组中每个字符串中剩下的引号fruv7luv3#
也许只是从引号中提取URL?
你可以通过regex
str.match(/".*?"/g).
来实现。或者只做
str.split(
",).map(url => url.substring(1))
。map
部分仅删除前导引号。u0njafvf4#
在这种情况下,您可以使用正则表达式来解析字符串并提取URL。以下是如何使用JavaScript实现这一点:
说明:
str.match(/"(.*?)"/g)
使用正则表达式匹配双引号中的文本,并返回匹配字符串数组。.map(function(url) { return url.replace(/"/g, ''); })
删除每个匹配URL的双引号。urls
数组将包含提取的URL。这段代码应该可以处理你的示例字符串,也可以处理带逗号的URL。