javascript - 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("")
解决方案
您可以在正则表达式中使用捕获组来保存令牌:
string.split(/([-+(),*/:? ])/g)
^ ^
|___ group __|
输出:
[
'elt', '(', 'a', ',',
'', ' ', 'b', ',',
'', ' ', 'c', ')',
''
]
您还可以轻松删除空字符串:
string.split(/([-+(),*/:? ])/g).filter(Boolean)
推荐阅读
- c# - 如何测试在 xUnit 中不会触发事件?
- python - 如何创建点击事件
- google-cloud-platform - 谷歌AI平台自定义多输入预测例程,如何读取json输入
- python - 在 Anaconda 中安装 python-midi 包
- firebase - 如何设置 Firebase 规则以允许经过身份验证的用户仅读取和写入自己的数据?
- swift - TableView didSelectRow 无法按预期结果执行
- python-3.x - 如何在列表中的列表中查找最大和最小数字
- python - TSFRESH - 由对称滑动窗口提取的特征
- python - 我想使用 Socket 将数据(图像)从 Nodejs 发送到 Python?
- ember.js - ember octane 测试助手:currentURL() 返回地址栏 URL()