zoukankan      html  css  js  c++  java
  • 纯js实现字符串formate方法

    function format(pattern){
        if(! (pattern instanceof String)){
            throw new TypeError("错误的参数类型");
        }
        var buf = [];
        for(var i=0; i<pattern.length; i++){
            if(pattern[i] == '{'){
                var flag = 0; //1:错误的左括号,2:匹配到对应右括号,3:错误
                var j = 0;
                for(j=i+1; j<pattern.length; j++){
                    if(pattern[j] == '{'){
                        flag = 1;
                        break;
                    } else if(pattern[j] == '}'){
                        flag = 2;
                        break;
                    }
                }
                if(flag == 0){
                    buf.push(pattern[i]);
                    continue;
                }
                if(flag == 1){
                    for(; i<j; i++){
                        buf.push(pattern[i]);
                    }
                    i--;
                } else if(flag == 2){
                    var sub = pattern.substr(i+1, j-i-1);
                    var pos = parseInt(sub);
                    if(!isNaN(pos) && !isNaN(sub)){
                        if(pos < arguments.length-1 && pos >= 0){
                            buf.push(arguments[pos+1]);
                            i = j;
                        } else {
                            flag = 3;
                        }
                    } else if (arguments.length >= 2 && arguments[1].hasOwnProperty(sub)){
                        buf.push(arguments[1][sub]);
                        i = j;
                    }
                    else {
                        flag = 3;
                    }
                    if(flag == 3){
                        for(; i<=j; i++){
                            buf.push(pattern[i]);
                        }
                        i--;
                    }
                }
            } else {
                buf.push(pattern[i]);
            }
        }
        return buf.join("");
    }

    使用方式:

    //使用从0开始的下标来匹配参数位置
    var str1 = format("{0}, {1}", 10, 20);
    //使用字段名来匹配参数位置,但只能匹配第一个参数的对应字段
    var str2 = format("{key}, {value}, {1}", {key:"aa", value:10}, 20);
  • 相关阅读:
    project和task
    Gradle的安装
    Spring 集成 RMI
    RMI远程调用
    安装、启动与基本配置
    删除
    文件的分隔与合并
    my27_OGG MySQL To MySQL错误汇总
    1.5 GO json转Map
    1.4 Go语言-switch语句(转)
  • 原文地址:https://www.cnblogs.com/lvniao/p/10917552.html
Copyright © 2011-2022 走看看