const str="1232{按钮1}{按钮2}765432";
const result=str.split(/(?=\{)|(?<=})/g);
// ["1232", "{按钮1}", "{按钮2}", "765432"]
然后把数字字符串转成数字。
result.map(str=>{let num=parseInt(str); if(num)return num; return str;});
使用了向前匹配和向后匹配,看这篇
可以用函数处理,逐个字符串进行判断。
最好自己尝试实现以下这个函数...
const str = "1232{按钮1}{按钮2}765432";
function handleStr(str) {
const result = [];
//表示是否在处理花括号内的字符
let inBraceNow = false;
for (let i = 0; i < str.length; i++) {
const currentChar = str[i];
if (inBraceNow) {
result[result.length - 1] += currentChar;
if (currentChar == "}") {
inBraceNow = false;
}
} else {
//遇到"{"开始进入花括号处理阶段...
if (currentChar == "{") {
result.push("{");
inBraceNow = true;
} else {
// result数组为空时,需要初始化
//如果数组最后一个不能转为数字,说明是刚进入数字处理阶段,需要传入一个0
if (result.length == 0||(!+result[result.length-1])) {
result.push(0);
}
result[result.length - 1] =10*result[result.length - 1]+(+currentChar);
}
}
}
return result;
}
console.log(handleStr(str));