尝试创建一个正则表达式,在 ',' 和 '\n' 处拆分字符串,然后传入自定义分隔符(在我的代码中由 firstChar 表示)。传入字符串的格式:{delimiter}\n{numbers}。我在线使用了 regex101,它似乎可以在那里工作,但在我的实际代码中,它不会在自定义分隔符处拆分,因此不确定我做错了什么。if (str.includes('\n')) { let firstChar = str.slice(0, 1); if (parseInt(firstChar)) { strArr = str.split(/,|\n/) ; } else { strArr = str.split(/[,|\n|firstChar]/); }}期望 ';\n2;5' 等于 7 但我的数组由于某种原因分成 [";", "2;5"] 。
1 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
您的第一个字符不是数字,因此您可以直接转到 else 条件,如果您想要动态正则表达式,则需要使用 RegExp
你也不需要这里的字符类
/[,|\n|firstChar]/
它应该是
/,|\n|firstChar/
let splitter = (str) => {
if (str.includes('\n')) {
let firstChar = str.slice(0, 1);
if (parseInt(firstChar)) {
return str.split(/,|\n/);
} else {
let regex = new RegExp(`,|\\n|\\${firstChar}`, 'g') // building a dynamic regex here
return str.split(regex).filter(Boolean)
}
}
}
console.log(splitter(";\n2;5"))
console.log(splitter("*\n2*5"))
添加回答
举报
0/150
提交
取消