繁体   English   中英

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

[英]javascript: split string for multiple separators but also keep the separators as separate token

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

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("")

您可以在正则表达式中使用捕获组来保存令牌:

string.split(/([-+(),*/:? ])/g)
              ^            ^
              |___ group __|

Output:

[
  'elt', '(', 'a', ',',
  '',    ' ', 'b', ',',
  '',    ' ', 'c', ')',
  ''
]

您还可以轻松删除空字符串:

string.split(/([-+(),*/:? ])/g).filter(Boolean)

尝试使用环视分割:

 var string = "elt(a, b, c)"; var parts = string.split(/(?<?\w)\s*(?=\w)|(?<=\w)\s*(;.\w)/); console.log(parts);

这里的逻辑是消耗任何空格,然后在可选空格之前的内容是非单词字符时拆分,然后是单词字符,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM