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

发布了8 篇原创文章 · 获赞 0 · 访问量 141

猜你喜欢

转载自blog.csdn.net/weixin_44157964/article/details/103914858
今日推荐