怎么截取不规则字符串

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

阅读 2.2k
3 个回答
  var a='1232{按钮1}{按钮2}765432'
    console.log(a.replace(/{/,',{').replace(/}/g,'},').split(','),'9999');

输出
图片描述

你再怎么样也需要有一个具体的规则来说明内容如何区分的啊,比如
1232{按钮1}{按钮2}765432/^(\d+)(\{按钮\d\})(\{按钮\d\})(\d+)$/可以从捕获的子匹配项上获取各个部分。例如

var re=/^(\d+)(\{按钮\d\})(\{按钮\d\})(\d+)$/;
var rtall=re.exec("1232{按钮1}{按钮2}765432");
console.log(rtall);
let str = "1232{按钮1}{按钮2}765432"
function trans (str) {
  let count = 0
  let matched = []
  let subStr = ''
  for (let i = 0, len = str.length; i < len; i++) {
    let cur = str[i]
    if (cur === '{') {
      if (count === 0) {
        if (subStr.length) matched.push(subStr)
        subStr = cur
      } else {
        subStr += cur
      }
      count++
    } else if (cur === '}') {
      subStr += cur
      count--
      if (count === 0) {
        matched.push(subStr)
        subStr = ''
      }
    } else {
      subStr += cur
    }
  }
  if (subStr.length) matched.push(subStr)
  return matched
}
trans(str)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题