javascript:拆分多个分隔符的字符串,但也保留分隔符作为单独的标记

我想拆分一个字符串,但希望将令牌和拆分器保留为单独的令牌,并希望返回一个数组:


elt(a,b,c)" => 

0 = "elt"

1 = "("

2 = "a"

3 = ","

4 = "b"

5 = ","

6 = "c"

7 = ")"


到目前为止,我在这里:


string = "elt(a, b, c)" 

string.split(new RegExp('[-+(),*/:? ]', 'g'))



0 = "elt"

1 = "a"

2 = ""

3 = "b"

4 = ""

5 = "c"

6 = ""

我想将分隔符作为数组传递,如下所示:SEPERATORS = [ '+', ',', '>>>=', '>>=', '<<=',",", "("].join("")


互换的青春
浏览 128回答 2
2回答

阿晨1998

您可以在正则表达式中使用捕获组来预存储令牌:string.split(/([-+(),*/:? ])/g)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |___ group __|输出:[&nbsp; 'elt', '(', 'a', ',',&nbsp; '',&nbsp; &nbsp; ' ', 'b', ',',&nbsp; '',&nbsp; &nbsp; ' ', 'c', ')',&nbsp; '']您还可以轻松删除空字符串:string.split(/([-+(),*/:? ])/g).filter(Boolean)

catspeake

尝试使用环图进行拆分:var string = "elt(a, b, c)";var parts = string.split(/(?<!\w)\s*(?=\w)|(?<=\w)\s*(?!\w)/);console.log(parts);这里的逻辑是使用任何空格,然后在可选空格之前的内容是非单词字符,后跟单词字符或反之亦然时进行拆分。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript