【问题标题】:Splitting string based on last occurance of , and _根据最后出现的 , 和 _ 分割字符串
【发布时间】:2015-03-29 15:12:00
【问题描述】:

我有一个字符串,看起来像 APP1_ENV1、ENV2、ENV3、APP2_ENV4、ENV5、APP3_ENV1 如何拆分这个字符串,以便我得到像 app 一样的关联数组及其以下 env? 示例输出 - APP1[ENV1,ENV2,ENV3],APP2[ENV4,ENV5],APP3[ENV1]

【问题讨论】:

    标签: javascript string associative-array


    【解决方案1】:

    我想你想要类似的东西

    input.replace(/([^,_]+)_((?:[^,_]+,)*?[^,_]+)(?=$|,[^,_]+_)/g, "$1[$2]")
    

    APP1_ENV1,ENV2,ENV3,APP2_ENV4,ENV5,APP3_ENV1
    => APP1[ENV1,ENV2,ENV3],APP2[ENV4,ENV5],APP3[ENV1]
    APP1_ENV1,ENV2,ENV3,TREND2_ENV4,ENV5,JADE3_ENV1
    => APP1[ENV1,ENV2,ENV3],TREND2[ENV4,ENV5],JADE3[ENV1]
    

    对于实际解析,我建议

    input.split(/,(?=[^,_]+_)/g).reduce(function(o, str) {
        var parts = str.split("_");
        o[parts[0]] = parts[1].split(",");
        return o;
    }, {});
    

    APP1_ENV1,ENV2,ENV3,APP2_ENV4,ENV5,APP3_ENV1
    => {"APP1":["ENV1","ENV2","ENV3"],"APP2":["ENV4","ENV5"],"APP3":["ENV1"]}
    APP1_ENV1,ENV2,ENV3,TREND2_ENV4,ENV5,JADE3_ENV1
    => {"APP1":["ENV1","ENV2","ENV3"],"TREND2":["ENV4","ENV5"],"JADE3":["ENV1"]}
    

    【讨论】:

      【解决方案2】:
      var str = "APP1_ENV1,ENV2,ENV3,APP2_ENV4,ENV5,APP3_ENV1";
      var obj = {};
      for(var i=1;i<str.split("APP").length;i++){
         var cont = str.split("APP")[i].slice(0,-1);
         obj["APP"+cont.split("_")[0]]=cont.split("_")[1].split(",")
      }
      

      现在obj 包含

      {"APP1":["ENV1","ENV2","ENV3"],"APP2":["ENV4","ENV5"],"APP3":["ENV"]}
      

      根据您的要求。

      【讨论】:

      • JSON.stringify(obj); // "{"APP1":["ENV1","ENV2","ENV3"],"APP2":["ENV4","ENV5"],"APP3":["ENV"]}"
      • 感谢@nicael,但如果我的应用程序有一些随机字符串,例如 APP1_ENV1,ENV2,ENV3,TREND2_ENV4,ENV5,JADE3_ENV1
      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多