尝试创建一个正则表达式,该表达式在'、'和'\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"]。
您的第一个字符不是数字,因此直接转到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"))