Mootools常用方法扩展(二)
作者:Fdream 来源:Fdream博客 发布时间:2009-01-11 18:22:00
标签:Mootools,扩展,方法,JavaScript
继续Mootools常用方法扩展,依然还是String类的扩展。
方法:format
说明:一个非常简单的format方法,和C#里面的format类似。这个方法会用参数来依次替换字符串中用大括号{}括起来的数字,比如用第一个参数替换{0},用第二个参数替换{1}等等。
参考代码:
String.implement({
format: function() {
///<summary>
/// 格式化一个字符串,替换其中用大括号包含的数字及大括号,类似C#的format
/// 如用第一个参数替换{0}
///</summary>
///<param name="values..." type="String">相关参数</param>
///<returns type="STRING" />
var s = this;
for (var i = 0; i < arguments.length; i++) {
s = s.replace(new RegExp("\\{" + i + "\\}", "g"), arguments[i]);
}
return s;
}
简单示例:
参考代码:
// 下面将返回 'my name is Fdream, I'm a boy'
var a = 'my name is {0}, I'm a {1}'.format('Fdream', 'boy');
方法:formatBy
说明:好,这个是一个复杂而强大的format方法,几乎可以随心所欲地对你的字符串进行格式化,用模板处理时非常方便。不过注意这里的格式稍微变化了一下,是替换类似${abc}这样的字符串。其中,abc是参数对象的一个属性,${abc}讲被参数传进来的对象的abc属性的值给替换掉。在这个里面还可以使用不同的分隔符,你可以对这个属性值进行函数处理或者截取。具体请参考后面的示例。
参考代码:
String.implement({
formatBy: function(obj, funs) {
///<summary>
/// 用对象格式化一个字符串
/// 可以对格式化的字符中进行指定的函数替换或者截取
///</summary>
///<param name="obj" type="object">用来替换格式的对象</param>
///<param name="funs" type="object">相应的替换函数</param>
///<returns type="STRING" />
funs = funs || {};
return this.replace(/\$\{([^\}]+)\}/g, function(a, b) {
var c = b.split(':');
var d = c[0].split('|');
if (d.length == 1) {
if (d[0] in obj) return c[1] ? obj[d[0]].truncate(c[1].toInt()) : obj[d[0]];
} else {
var f = d[1].trim();
if ((f in funs) && (d[0] in obj)) {
var r = funs[f](obj[d[0]]);
return c[1] ? r.truncate(c[1].toInt()) : r;
}
}
return a;
})
}
}
简单示例:
先来一个简单的用法,和上面的format类似:
参考代码:
var obj = { 'name': 'PPLive', 'age': '4' };
var fmt = '${name} is ${age} years old now!';
再来一个复杂一点的应用:
参考代码:
var funs = {
sexFun: function(sex) {
switch (sex) {
case 1:
case '1':
return 'boy';
default:
return 'girl';
}
}
};
var obj = { 'name': 'Tom', 'sex': '1', 'address': 'Zhangjiang High Tech Park' };
var fmt = '${name} is a ${sex|sexFun}, address is ${address:14}';
// 现在fmt就等于 'Tom is a boy, address is Zhangjiang Hig'


猜你喜欢
- 从python2到python3,这两个版本可以说是从语法、编码等多个方面上都有很大的差别。为了不带入过多的累赘,Python 3.0在设计
- Python没有类似于Java的private关键字, 但也可以为类定义私有属性. 只需将属性命名变为以__开头, 例如 __field.示
- 1 注释符注释是指程序代码中不执行的文本字符串,是对程序的说明,可以提高程序的可读性,使程序代码更易于维护,一般嵌入在程序中并以特殊的标记显
- 本文介绍,在 VSCode 使用 IPython Kernel的设置方法,详细介绍如下所示:要达到的效果:只需按下 Ctrl+;,选中的几行
- 本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考,具体如下:在这篇文章中,我们将基于 Python 讨论自然语
- 本文目的是由浅入深地介绍python装饰器原理装饰器(Decorators)是 Python 的一个重要部分其功能是,在不修改原函数(类)定
- 作者: hezhiwu5@163.com <script language="javascr
- 本文实例讲述了python使用Image处理图片常用技巧。分享给大家供大家参考。具体分析如下:使用python来处理图片是非常方便的,下面提
- 最近要做一个图像生成的课题,在网上找了一个混合的数据集。这个数据集中一共有360个文件夹,然后文件夹中有6-9张不等的照片,我的目标就是编写
- 当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值。因为用s = [[0]*3]*2 初始
- 使用django实现注册登录的话,注册登录都有现成的代码,主要是自带的User字段只有(email,username,password),所
- 最近有Win10系统用户反映,由于自己的电脑安装有两个python软件,所以想要卸载掉其中一个,不过在卸载的时候却发现无法卸载,并且出现提示
- 目录查找算法 -- 简介顺序查找二分查找插值查找斐波那契查找树表查找1、二叉树查找算法。2、平衡查找树之2-3查找树(2-3 Tree)3、
- vue 页面卡死,点击无反应我在结合element做表单的时候,进入编辑页时,点击切换不生效,但是value值已改变,就是view视图层无反
- 利用 vue+canvas 实现拼图小游戏,供大家参考,具体内容如下思路步骤一个拼图拼盘和一个原图参照对原图的切割以及随机排序通过W/A/D
- 在基于互联网的应用中,程序经常需要自动地发送电子邮件。如:一个网站的注册系统会在用户注册时发送一封邮件来确认注册;当用户忘记登陆密码的时候,
- 当设计一个产品,其中很多地方要把日期类型保存到数据库中,如果产品有兼容不同数据库产品的需求,那么,应当怎样设计呢?当然,首先想到的是,使用数
- MaxDB和MySQL是独立的数据库管理服务器。系统间的协同性是可能的,通过相应的方式,系统能够彼此交换数据。要想在MaxDB和MySQL之
- websocketWebsocket只是一个网络通信协议就像 http、ftp等都是网络通信的协议;不要多想;相对于HTTP这种非持久的协议
- 需求描述项目首先要用户选择某个问题,选择之后使用ElementUI的Notification组件提示用户正在对文件格式进行检查(需要先提交给