javascript实现一个方法,可以把字符串如"2[2[ab]3[c]]4[e]"变为'ababcccababccceeee'

javascript实现一个方法,可以把字符串如"2[2[ab]3[c]]4[e]"变为’ababcccababccceeee’**

要求:实现一个方法,可以把字符串如"2[2[ab]3[c]]4[e]"变为’ababcccababccceeee’

解释:2[ab]为2个’ab’ 达到的效果为’abab’’
3[c]为3个’c’ 达到的效果为’ccc’’
4[e]为4个’e’ 达到的效果为’eeee’’
所以最终实现的效果为’ababcccababccceeee’

解题思路:使用正则找出匹配规则,再用递归进行深度遍历

var str='2[2[ab]3[c]]4[e]';
function decodeString(str){
      if (!/\d+\[[a-zA-Z]+\]/g.test(str)) return str;
      //如果不符合\d[a-zA-Z]的匹配格式,就直接跳出返回字符串
      str=str.replace(/\d+\[[a-zA-Z]+\]/g,function(item,index){
      	  //item指的是2[ab]3[c]4[e]
          var arr=item.match(/(\d+)\[([a-zA-Z]+)\]/).slice(1);
          //把数字和字母分为群组,不加g返回的是带有匹配元素和群组的数组,去掉匹配元素,获取只有数字和字母的数组
          var s=arr[1].repeat(arr[0]);
          //数组的第一项为字母,让数组的第一项重复
         return s;
         //把获取到的新的字符串(重复之后的字母)返回给str,str变为修改过后的字符串
      });
      str=decodeString(str)
      //让str重新递归,查找符合条件的字符,进行替换,并且赋值给str,直至不符合条件直接返回str
      return str;
  }
console.log(decodeString(str));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡肖一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值