查找方法参数(方法有多个参数,参数有可能是方法,该方法又会有多个参数)。

Method1(para1,para2,Method2(para3,Method3(para3,para4,para5),para5),para6)

上面方法1有四个参数,用都好分隔开,第三个参数是方法,切该方法第二个参数又是方法,现在我们想要提取方法1的参数,也就是para1,   para2,   Method2(para3,Method3(para3,para4,para5),para5)     ,    para6

这四个参数,如果我们仅仅是分割逗号符,肯定是不行的,因为有些参数又是方法,它还有多参的情况,这时我们需要考虑的就有两个方面:

1 根据逗号分割,

2 格局括号来匹配完整的参数(参数为方法,方法带有括号)。

我的思路如下:提取参数:para1,para2,Method2(para3,Method3(para3,para4,para5),para5),para6

按逗号分割,分割结果如下:

para1        para2        Method2   (para3       Method3   (para3       para4       para5)       para5)       para6

然后遍历分割后的数组里的字符串,如果不包含“(”,直接取出(因为参数肯定是以“(”开始的,所以不需要考虑“)”,肯定是匹配的。),如果包含左括号,就让当前字符串与下一个字符串相加,然后计算得到字符串中的左右括号是否匹配,如果匹配则取出,如果不匹配则继续加上下一个字符串,再次几所是否左右括号匹配,以此轮推。这样就能取出所有的参数;

代码:

(累加法匹配左右字符串)

function parenthesisMatching(str) {
        var flag = 0;
        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) === "(") {
                flag++;
            }
            if (str.charAt(i) === ")") {
                flag--;
            }
        }
        if (flag === 0) {
            return true;
        } else {
            return false;
        }
    }

(计算方法参数)

function getParas (methondText){

var par = [];
var methondText= str.split(",");
            for (var t = 0; t < params.length; t++) {
                if (params[t].charAt("(") < 0) {
                    par.push(params[t]);
                } else {
                    var text = params[t];
                    while (!parenthesisMatching(text)) {
                        text = text + "," + params[++t];
                    }
                    par.push(text);
                }
            }
return par;
}

此时,par中就是我们的方法参数;

["para1"   ,"para2"   ,"Method2(para3,Method3(para3,para4,para5),para5"   ,"para6"  ]

经过项目验证,如下的Excel formulas 也可以正常提取参数:

=TRIM(REPT(INDEX(n_1,1+INT(A2/10^8))&" hundred",10^8<A2)&IF(A2-TRUNC(A2,-8)<2*10^7,INDEX(n_1,1+MID(TEXT(A2,"000000000"),2,2)),INDEX(n_2,1+MID(TEXT(A2,"000000000"),2,2)/10)&INDEX(n_3,1+RIGHT(INT(A2/10^6))))&REPT(" million",10^6<A2)&IF(--RIGHT(INT(A2/10^5)),INDEX(n_1,1+RIGHT(INT(A2/10^5)))&" hundred","")&IF(A2-TRUNC(A2,-5)<2*10^4,INDEX(n_1,1+MID(TEXT(A2,"000000000"),5,2)),INDEX(n_2,1+MID(TEXT(A2,"000000000"),5,2)/10)&INDEX(n_3,1+RIGHT(INT(A2/10^3))))&IF(--MID(TEXT(A2,"000000000"),4,3)," thousand","")&IF(--RIGHT(INT(A2/100)),INDEX(n_1,1+RIGHT(INT(A2/100)))&" hundred","")&IF(MOD(A2,100)<20,INDEX(n_1,1+RIGHT(A2,2)),INDEX(n_2,1+RIGHT(A2,2)/10)&INDEX(n_3,1+RIGHT(A2))))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值