怎么截取不规则字符串

例如我有一个1232{按钮1}{按钮2}765432这样动态的字符串(长度不固定)我怎么拿到1231和{按钮1},{按钮2},765432?

阅读 2.1k
1 个回答
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));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题