为了账号安全,请及时绑定邮箱和手机立即绑定

怎么截取不规则字符串

怎么截取不规则字符串

www说 2019-03-21 18:14:12
例如我有一个1232{按钮1}{按钮2}765432这样动态的字符串(长度不固定)我怎么拿到1231和{按钮1},{按钮2},765432?
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

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));


查看完整回答
反对 回复 2019-04-06
  • 1 回答
  • 0 关注
  • 522 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号