将字符串拆分为两个字符之间的数组

Split string into array between to characters?

本文关键字:字符 两个 之间 数组 拆分 字符串      更新时间:2023-09-26

所以我试图分割字符串,我有一些不正常的方式。我尝试用正则表达式做一些事情,但我不太喜欢regex来发明这样的东西。

基本上我有一个像这样的字符串:

var links = "<a>4</a><b><c><d><e><f>";

我想使用。split() js方法在数组中接收它们,如下所示

["<a>4</a>", "<b>", "<c>", "<d>", "<e>", "<f>"]

很明显,我需要在><字符上拆分它们但是如果我这样做:

links.split("><");

它们会以我想要的方式分开但我要松开><符号。例子:

["<a>4</a", "b", "c", "d", "e", "f>"]

这对我来说不是一个好的解决方案。

所以基本上我的问题是:是否有可能使某种解决方案与正则表达式或其他东西得到数组结果,我想象?

一种快速而干净的方法是使用match代替split:

var matches = links.match(/<.+?>(?=<|$)/g)

对于你的字符串,它给出

["<a>4</a>", "<b>", "<c>", "<d>", "<e>", "<f>"]

请注意,在HTML等非正则语言中使用正则表达式是危险的。对于简单的事情,它通常是可以的,但它也有局限性,您可能会遇到意外,例如,如果您想将它应用于嵌套元素。

一种快速的方法是在><之间添加一个分隔符,使用正则表达式replace,然后在该分隔符上进行分割:

var links = "<a>4</a><b><c><d><e><f>";
links.replace(/></g, '>|<').split('|');
结果:

["<a>4</a>", "<b>", "<c>", "<d>", "<e>", "<f>"]

只要确保您选择的分隔符不出现在字符串本身。
(您可以使用较长的字符串作为分隔符,如:"|-|")