Mootools常用方法扩展(二)

作者:Fdream 来源:Fdream博客 时间:2009-01-11 18:22:00 

  继续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'


标签:Mootools,扩展,方法,JavaScript
0
投稿

猜你喜欢

  • 如何强制删除或恢复SQLServer正在使用的数据库

    2024-01-28 16:16:56
  • Go语言中利用http发起Get和Post请求的方法示例

    2024-04-26 17:33:22
  • vue实现登录界面

    2024-05-02 16:53:56
  • PaddleOCR 识别表情包文字示例详解

    2023-06-02 06:41:55
  • 深入浅析PHP的session反序列化漏洞问题

    2024-05-13 09:51:14
  • 深入解析Go语言编程中slice切片结构

    2024-04-25 15:01:23
  • PHP mysqli扩展库 预处理技术的使用分析

    2023-11-21 07:10:21
  • Mysql带And关键字的多条件查询语句

    2024-01-14 08:41:17
  • pandas 实现将NaN转换为None

    2023-01-23 21:23:09
  • javascript 得到变量类型的函数

    2024-04-30 08:53:34
  • PyQT实现多窗口切换

    2023-04-14 02:40:32
  • MySQL中InnoDB存储引擎的锁的基本使用教程

    2024-01-21 09:27:01
  • Python OpenCV绘制各类几何图形详解

    2023-02-04 18:27:01
  • 小程序点餐界面添加购物车左右摆动动画

    2024-04-27 15:22:36
  • Python通过pymysql调用MySQL进行增删改移查

    2024-01-28 07:59:17
  • Golang中的panic之避免和处理程序中的异常情况

    2024-02-20 10:22:49
  • python实现按任意键继续执行程序

    2021-02-12 12:47:10
  • Sysbench对Mysql进行基准测试过程解析

    2024-01-15 18:04:25
  • JS将滑动门改为选项卡(需鼠标点击)的实现方法

    2024-05-22 10:36:17
  • TensorFlow人工智能学习数据合并分割统计示例详解

    2022-01-23 05:14:23
  • asp之家 网络编程 m.aspxhome.com