有时候觉得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方法扩张.的更多相关文章

  1. JavaScript学习笔记-用于模式匹配的String方法

    用于模式匹配的String方法:   String支持4种使用正则表达式的方法:           seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如 ...

  2. JavaScript String 字符串方法

    JavaScript String 字符串方法汇总   1.str.indexOf() 方法查找字符串中的字符串  返回   字符串中指定文本首次出现的索引(位置)       JavaScript ...

  3. JavaScript String 对象

    JavaScript String 对象 String 对象 String 对象用于处理文本(字符串). String 对象创建方法: new String(). 语法 var txt = new S ...

  4. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  5. javascript string 函数集

    JavaScript_String对象说明 string中文为"字符串"的意思,String继承自Object对象,此对象提供字符串的查找操作等函数 JavaScript字符串类型 ...

  6. JavaScript使用方法和技巧大全

        有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西会浪费你很多时间,我一直以为我早在几年前就已经精通Ja ...

  7. 【译】你应该了解的JavaScript数组方法

    让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...

  8. JavaScript test() 方法

    JavaScript test() 方法 JavaScript RegExp 对象 定义和用法 test() 方法用于检测一个字符串是否匹配某个模式. 语法 RegExpObject.test(str ...

  9. Javascript Array 方法整理

    Javascript Array 方法整理 Javascript 数组相关方法 说明 大多数其它编程语言不允许改变数组大小,越界访问索引会报错,但是 javascript不会报错,不过不建议直接修改a ...

随机推荐

  1. C# 加密可逆

    现在一直在做一个小软件,公司的通讯录系统,也没什么功能增删改查,这算是我来这个公司实习的第一件事吧. 在修改个人信息的时候一直对于密码显示这个存在矛盾,不知道应该是要哪种形式去做,后来自己就先用md5 ...

  2. linux下tar用法

    以下是linux下tar的用法,转一下,以便方便自己看(这里没把rar,zip类的转过来,一般rar,zip在linux下基本没人用,基本上是zip,unzip,rar,unrar,这些命令,并且ra ...

  3. NET Core开发-获取所有注入(DI)服务

    NET Core开发-获取所有注入(DI)服务 获取ASP.NET Core中所有注入(DI)服务,在ASP.NET Core中加入了Dependency Injection依赖注入. 我们在Cont ...

  4. mysql-protocol中对编码长度整数型的规则

    固定长度整型数值在mysql 协议中的应用之一就是affected row :这个要根据首字节来判断 1.如果首字节小于251;那么首字节就是它要表示的数值. 2.如果首字节等于251;那么它表示的就 ...

  5. Oracle的几种索引

    Oracle 提供了多种不同类型的索引以供使用.简单地说, Oracle 中包括如下索引: 1. B* 树索引 这些是我所说的 “ 传统 “ 索引.到目前为止,这是 Oracle 和大多数其他数据库中 ...

  6. Silverlight 结合ArcGis 使用inforwindow

    原文 http://www.dotblogs.com.tw/justforgood/archive/2012/05/10/72089.aspx 也许有些人不知道什么事inforwindow,简单来说就 ...

  7. linux vi 中s 替换方法

    vi/vim 中可以使用 :s 命令来替换字符:s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n, ...

  8. Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive分区表、桶

    Hive分区表 在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念.分区表指的是在创建表时指 ...

  9. eclipse工具再学习

    今天下午最后近1小时及晚上2个多小时,我都花费时间在工程环境配置上,自尊心被严重摧残,各种郁闷和抱怨.源头是我部分刷新代码后运行工程依赖的jar报错,后来找同事发现是因为我没更新pom.xml文件,重 ...

  10. poj 2723 Get Luffy Out(2-sat)

    Description Ratish is a young man who always dreams of being a hero. One day his friend Luffy was ca ...