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));
然后把数字字符串转成数字。
使用了向前匹配和向后匹配,看这篇
可以用函数处理,逐个字符串进行判断。
最好自己尝试实现以下这个函数...