zoukankan      html  css  js  c++  java
  • Javascript实现C#的String.Format

    String.prototype.format = function (args) {
      var formatted = this;
      if (arguments.length > 0) {
        if (arguments.length == 1 && typeof args == "object") {
          for (var key in args) {
            if (args[key] != undefined) {
              var reg = new RegExp("({" + key + "})", "g");
              formatted = formatted.replace(reg, args[key]);
            }
          }
        } else {
          for (var i = 0; i < arguments.length; i++) {
            if (arguments[i] != undefined) {
              var reg = new RegExp("({)" + i + "(})", "g");
              formatted = formatted.replace(reg, arguments[i]);
            }
          }
        }
      }
      return formatted;
    }
    复制代码
    "我是{0},性别{1}".format("张三","男") // 我是张三,性别男
    "我是{name},性别{sex}".format({name:"李四",sex:"女"}) // 我是李四,性别女
    在.net c#中有非常简单易用的string.Format 静态函数可以做到:
    
     string.Format("http://wcf.open.cnblogs.com/blog/sitehome/paged/{0}/{1}", pageIndex, pageSize);
    因为string.format这个功能用到的地方比较多, 所以就用js实现了一个简单的版本 :
    
    复制代码
     String.format = function ()
            {
                var formatStr = arguments[0];
    
                if ( typeof formatStr === 'string' )
                {
                    var pattern,
                        length = arguments.length;
    
                    for ( var i = 1; i < length; i++ )
                    {
                        pattern = new RegExp( '\{' + ( i - 1 ) + '\}', 'g' );
                        formatStr = formatStr.replace( pattern, arguments[i] );
                    }
                } else
                {
                    formatStr = '';
                }
    
                return formatStr;
            };
    复制代码
    以上代码给javascript String类加了一个静态方法 format, 然后其用法就和c#的 string.format一模一样了, 测试如下:
    
    String.format('http://wcf.open.cnblogs.com/blog/sitehome/paged/{0}/{1}',1,20)
    输出: "http://wcf.open.cnblogs.com/blog/sitehome/paged/1/20"
    String.format('{0}+{0}+{1}={2}',1,2,1+1+2)
    输出: "1+1+2=4"
    String.format({name:'leonwang'},'hello,world')
    输出: ""
    如果第一个参数不是string类型, 就简单返回空string, 不做进一步处理。
  • 相关阅读:
    docker network
    mongodb索引
    docker中管理数据
    mysql表备份及还原
    Find and run the whalesay image
    Learn about images & containers
    docker installation on ubuntu
    【转载】熟练利用google hacking来辅助我们快速渗透
    xmind常用快捷键
    漏洞挖掘基础
  • 原文地址:https://www.cnblogs.com/turnip/p/13041543.html
Copyright © 2011-2022 走看看