Extjs4 EXTJS中的Ext.String.format增强

Extjs4 EXTJS中的Ext.String.format增强,extjs4,Extjs4,我是ExtJS新手。我遇到了以下代码: Ext.String.format('<a href="mailto:{0}">{1}</a>',value+"@abc.com",value); Ext.String.format(“”,value+“@abc.com”,value); 现在,这将创建一个mailto链接。但我的问题是Ext.String.format是如何工作的,我还能用它做什么 允许您定义标记化字符串并传递任意数字 替换标记的参数的集合。每个令牌必须是唯一

我是ExtJS新手。我遇到了以下代码:

Ext.String.format('<a href="mailto:{0}">{1}</a>',value+"@abc.com",value);
Ext.String.format(“”,value+“@abc.com”,value);
现在,这将创建一个mailto链接。但我的问题是Ext.String.format是如何工作的,我还能用它做什么


允许您定义标记化字符串并传递任意数字 替换标记的参数的集合。每个令牌必须是唯一的,并且 必须以{0}、{1}等格式递增

您可以查看函数的,并看到它使用了
formatRe
regex(
/\{(\d+)\}/g
):


允许您定义标记化字符串并传递任意数量的参数以替换标记。每个标记必须是唯一的,并且必须以{0}、{1}等格式递增

修改以下Ext.String.format以接受格式化程序函数(Ext.util.format) 例如 警报(Ext.String.format(“{0}{1:usMoney}{2:date('Y-m-d')”),10,20,new date())

这是修改后的代码 代码:

Ext.String.\u formatRe=/{(\d+)(:\:([\w.])(?:(((.?))))?}/g; Ext.String._argRe=/(['“])(.?)\1\s(?:,|$)/g

format: function(format) {
        var args = Ext.Array.toArray(arguments, 1);
        return format.replace(formatRe, function(m, i) {
            return args[i];
        });
    }
    Ext.String.format = function(format) {
        var args = Ext.Array.toArray(arguments, 1),
            fm = Ext.util.Format;

        return format.replace(Ext.String._formatRe, function(m, idx, fn, fmArgs) {
            var replaceValue = args[parseInt(idx, 10)],
                values,
                match;

            if (fn) {
                values = [replaceValue];

                while (match = Ext.String._argRe.exec(fmArgs)) {
                    values.push(match[2]);
                }

                return fm[fn].apply(fm, values);
            }

            return replaceValue;
        });
    };