根据上次出现的、和_拆分字符串
Splitting string based on last occurance of , and _
我有一个字符串,看起来像APP1_ENV1、ENV2、ENV3、APP2_ENV4、ENV5、APP3_ENV1如何拆分这个字符串,以便获得类似应用程序的关联数组及其以下env?示例输出-APP1[ENV1,ENV2,ENV3],APP2[ENV4,ENV5],APP3[ENV1]
我想你想要这样的东西
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"]}
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"]}
根据您的要求。
相关文章:
- 通过跳过拆分字符在 javascript 中拆分字符串
- jQuery字符串使用split()方法在空格后拆分字符串
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何在JavaScript中按大小写拆分字符串
- 根据上次出现的、和_拆分字符串
- 拆分字符串数组(JavaScript)后未定义
- 在空行上拆分字符串
- 使用Regex拆分字符串,保留分隔符
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- Nashorn和Rhino:使用空白regexp拆分字符串
- Javascript:不使用.split()方法拆分字符串
- 如何使用正则表达式在javascript中拆分字符串
- Javascript在第一个空格上拆分字符串
- 首次出现时拆分字符串
- 如何使用正则表达式(.match())拆分字符串
- 使用正则表达式拆分字符串
- Javascript:拆分字符串,但仅使用 1 个结果
- Angularjs-拆分字符串问题
- angularjs在拆分字符串时解析语法错误
- 基于javascript中的AND OR逻辑拆分字符串