javascript - 在 JavaScript 中,如何用逗号分割字符串“aa,bb\\,cc,dd”,但前提是前一个字符不是反斜杠?
问题描述
我有一个字符串aa,bb\\,cc,dd
。我需要用逗号分隔它,但前提是前一个字符不是反斜杠。所以我想要的是:
aa
bb\\,cc
dd
由于JavaScript正则表达式不支持负回溯,我想知道在这种情况下如何解决它。谢谢你。
解决方案
如果要使用后向断言按逗号拆分,可以按所有逗号拆分,然后在.reduce()
累加数组时强制执行后向断言。
const str = 'aa,bb\\,cc,dd'
const values = str.split(/,/g).reduce((acc, str) => {
const lastIndex = acc.length - 1
if (lastIndex >= 0 && acc[lastIndex].endsWith('\\')) {
acc[lastIndex] += str
} else {
acc.push(str)
}
return acc
}, [])
console.log(values)
推荐阅读
- python - 从另一个对象的变量设置对象的变量时出现奇怪的 Python 行为
- windows-mobile - 无法在 Visual Studio Professional 2017 中创建 XAP 文件
- javascript - 使用正则表达式的 Javascript 数组排序
- c# - 除了在 Visual Studio 2017 中启动之外,如何将调试器附加到其他进程?
- javascript - nodejs 树莓派 LED 不闪烁
- amazon-web-services - 当 AWS 自动扩展/缩减实例时,有没有办法保留相同的实例
- java - java.sql.SQLException:在关闭的连接上调用 createStatement()
- react-redux - React / Redux 返回对象不是预期的
- html - CSS Dropdown,不从父级向下对齐
- apache-beam - 如何在 Apache Beam 2.6 中使用 FileIO.writeDynamic() 写入多个输出路径?