1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
const str="1232{按鈕1}{按鈕2}765432";
const result=str.split(/(?=\{)|(?<=})/g);
// ["1232", "{按鈕1}", "{按鈕2}", "765432"]
然后把數(shù)字字符串轉(zhuǎn)成數(shù)字。
result.map(str=>{let num=parseInt(str); if(num)return num; return str;});
使用了向前匹配和向后匹配,看這篇
可以用函數(shù)處理,逐個(gè)字符串進(jìn)行判斷。
最好自己嘗試實(shí)現(xiàn)以下這個(gè)函數(shù)...
const str = "1232{按鈕1}{按鈕2}765432";
function handleStr(str) {
const result = [];
//表示是否在處理花括號(hào)內(nèi)的字符
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 {
//遇到"{"開始進(jìn)入花括號(hào)處理階段...
if (currentChar == "{") {
result.push("{");
inBraceNow = true;
} else {
// result數(shù)組為空時(shí),需要初始化
//如果數(shù)組最后一個(gè)不能轉(zhuǎn)為數(shù)字,說(shuō)明是剛進(jìn)入數(shù)字處理階段,需要傳入一個(gè)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));
添加回答
舉報(bào)