Extjs4 EXTJS中的Ext.String.format增强
我是ExtJS新手。我遇到了以下代码: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是如何工作的,我还能用它做什么 允许您定义标记化字符串并传递任意数字 替换标记的参数的集合。每个令牌必须是唯一
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;
});
};