尝试创建一个正则表达式,该表达式将一个字符串拆分为“,”和“ \ n”,然后传入一个自定义定界符(在我的代码中由firstChar表示)。
要传入的字符串的格式:{定界符} \ n {数字}。我在网上使用过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”]。
答案 0 :(得分:1)
您的第一个字符不是数字,因此您直接进入其他条件,如果您想使用动态正则表达式,则需要使用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"))