有时候觉得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);

最新文章

  1. sh5.while 脚本练习
  2. javascript数据结构与算法--链表
  3. MVC,MVP 和 MVVM
  4. 【转】MYSQL入门学习之十一:触发器的基本操作
  5. Python科学画图小结
  6. C# 查询Windows Service 信息 ,所在目录 启动状态
  7. uva 10940
  8. Mybatis 动态获取字段值(不需要创建javabean)
  9. 子窗口url调整导致父窗口刷新
  10. Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号
  11. DBoW2算法原理介绍
  12. 【Linux基础】crontab定时命令详解
  13. Python_内置函数之zip
  14. 查看oracle数据库是否为归档模式
  15. D6差分及树上差分
  16. scikit-learn入门导航
  17. winform只允许一个应用程序运行
  18. 【Ray Tracing in One Weekend 超详解】 光线追踪1-1
  19. P2154 [SDOI2009]虔诚的墓主人
  20. monkey测试入门2--测试步骤、常用参数、常规monkey命令

热门文章

  1. JQuery中阻止事件冒泡的两种方式及其区别
  2. The FastCGI process exited unexpectedly
  3. EcStore中的App是什么东西?
  4. php的一些小笔记--数组
  5. Python 之socket的应用
  6. Eclipse 乱码解决方案(UTF8 -- GBK)
  7. order by 中 使用decode
  8. md5sum.c, md5.c, md5.h
  9. 哈希表原理及hashmap简单实现
  10. 【转】android 电池(一):锂电池基本原理篇