在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  Java  HTML/ 怎么截取不規(guī)則字符串

怎么截取不規(guī)則字符串

例如我有一個(gè)1232{按鈕1}{按鈕2}765432這樣動(dòng)態(tài)的字符串(長(zhǎng)度不固定)我怎么拿到1231和{按鈕1},{按鈕2},765432?

回答
編輯回答
殘淚
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 {
        //遇到"{"開(kāi)始進(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));
2017年10月15日 03:27