码迷,mamicode.com
首页 > 编程语言 > 详细

javascript. String方法扩张.

时间:2015-03-02 12:48:19      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

有时候觉得js内置的方法不够用.可自己扩充.

下面是我扩充的几个方法.

为了避免变量冲出.覆盖.利用自执行函数实现.

+function (a) {
    a.fn = a.prototype;
    var fn = {
        /**
         * 进制转换
         * @param to
         * @returns {string}
         */
        toBits: function (to) {
            var bits = [];
            var t = this;
            var i = 0;
            for (i; i < t.length; i++) {
                var code = t.charCodeAt(i);
                bits.push(code.toString(to));
            }
            bits.reverse();
            return bits.join("");
        },
        /**
         * 去除右变指定字符串.默认空白
         * @returns {XML|string|void|*}
         */
        rtrim: function () {
            var replace = arguments[0] || "\\s";
            var r = new RegExp("(^" + replace + "{1,})");
            return this.replace(r, ‘‘);
        },
        /**
         * 去除左边指定字符串.默认空白
         * @returns {XML|string|void|*}
         */
        ltrim: function () {
            var replace = arguments[0] || "\\s";
            var r = new RegExp("(" + replace + "{1,}$)");
            return this.replace(r, ‘‘);
        },
        /**
         * 去除两边指定字符串.默认空白
         * @returns {XML|string|void|*}
         */
        trim: function () {
            var str = this, a = arguments;
            str = str.ltrim.apply(str.rtrim.apply(str, a), a);
            return str;
        },
        str_repeat: function (i, m) {
            for (var o = []; m > 0; o[--m] = i);
            return o.join(‘‘);
        },
        /**
         * c的sprintf实现
         * @returns {string}
         */
        sprintf: function () {
            var i = 0, a, f = this.toString(), o = [], m, p, c, x, s = ‘‘;
            while (f) {
                if (m = /^[^\x25]+/.exec(f)) {
                    o.push(m[0]);
                }
                else if (m = /^\x25{2}/.exec(f)) {
                    o.push(‘%‘);
                }
                else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|‘[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
                    if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) {
                        throw(‘Too few arguments.‘);
                    }
                    if (/[^s]/.test(m[7]) && (typeof(a) != ‘number‘)) {
                        throw(‘Expecting number but found ‘ + typeof(a));
                    }
                    switch (m[7]) {
                        case ‘b‘:a = a.toString(2);break;
                        case ‘c‘:a = this.fromCharCode(a); break;
                        case ‘d‘:a = parseInt(a);break;
                        case ‘e‘:a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
                        case ‘f‘:a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a);break;
                        case ‘o‘:a = a.toString(8);break;
                        case ‘s‘:a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a);break;
                        case ‘u‘:a = Math.abs(a);break;
                        case ‘x‘:a = a.toString(16); break;
                        case ‘X‘:a = a.toString(16).toUpperCase();break;
                    }
                    a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? ‘+‘ + a : a);
                    c = m[3] ? m[3] == ‘0‘ ? ‘0‘ : m[3].charAt(1) : ‘ ‘;
                    x = m[5] - String(a).length - s.length;
                    p = m[5] ? this.str_repeat(c, x) : ‘‘;
                    o.push(s + (m[4] ? a + p : p + a));
                }
                else {
                    throw(‘Huh ?!‘);
                }
                f = f.substring(m[0].length);
            }
            return o.join(‘‘);
        }






    };
    for (var i in fn) {
        a.fn[i] = fn[i];
    }
    window.String = a;
}(String);

 

javascript. String方法扩张.

标签:

原文地址:http://www.cnblogs.com/iyoule/p/4308455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!