javascript. String方法扩张.
有时候觉得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方法扩张.的更多相关文章
- JavaScript学习笔记-用于模式匹配的String方法
用于模式匹配的String方法: String支持4种使用正则表达式的方法: seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如 ...
- JavaScript String 字符串方法
JavaScript String 字符串方法汇总 1.str.indexOf() 方法查找字符串中的字符串 返回 字符串中指定文本首次出现的索引(位置) JavaScript ...
- JavaScript String 对象
JavaScript String 对象 String 对象 String 对象用于处理文本(字符串). String 对象创建方法: new String(). 语法 var txt = new S ...
- 在Swift中使用JavaScript的方法和技巧
本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...
- javascript string 函数集
JavaScript_String对象说明 string中文为"字符串"的意思,String继承自Object对象,此对象提供字符串的查找操作等函数 JavaScript字符串类型 ...
- JavaScript使用方法和技巧大全
有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西会浪费你很多时间,我一直以为我早在几年前就已经精通Ja ...
- 【译】你应该了解的JavaScript数组方法
让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...
- JavaScript test() 方法
JavaScript test() 方法 JavaScript RegExp 对象 定义和用法 test() 方法用于检测一个字符串是否匹配某个模式. 语法 RegExpObject.test(str ...
- Javascript Array 方法整理
Javascript Array 方法整理 Javascript 数组相关方法 说明 大多数其它编程语言不允许改变数组大小,越界访问索引会报错,但是 javascript不会报错,不过不建议直接修改a ...
随机推荐
- Ubuntu14.04配置arm-linux-gcc 4.4.3交叉编译环境
首先下载交叉编译:不多说,直接贴地址了 http://arm9download.cncncn.com/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.g ...
- python调webservice和COM接口
调webservice # -*- coding: cp936 -*- from suds.client import Client url = 'http://192.168.50.165/port ...
- Sumblime Text 2 常用插件以及安装方法
1.直接安装 安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages). 2.使用Package C ...
- web 前端 shopnc项目 首页分类一开始做前端,我是拒绝的
看图别说话 经过几小时的折腾 主要还是靠耐心
- php的一些小笔记--数学函数
通常我们使用的数学函数不多,经常出现的有 floor 地板->舍去 ceil 天花板->进一 round 四舍五入 rand 随机数 mt_rand 产生更好的随机数 pow 指数表达 ...
- py正则表达式
1.元字符 . ^ $ * + ? {} [] \ | () --> [] : - 常用来指定一个字符集:[abc], [a-z] 匹配任意一个字符 - 元字符在字符集中不起作用:[akm ...
- 负载均衡集群之LVS算法和模型
LVS-->Linux Virtual Server 实现算法-->静态/动态,共10种 静态算法: rr(round robin): 解析:轮叫算法,即0-9循环 ...
- PyQt4.11.3(python3.4+QT4)ui文件生成py文件
最近开始接触学习Python,所以想用QT弄个窗体程序出来玩玩,环境是Python3.4.2.PyQt4.11.3-Py3.4.Win7.用PyQt自带的Designer设计出一个窗体ui文件后,需要 ...
- 分布式文件系统MooseFS安装步骤
1. 安装 1.1 准备安装环境 首先选择一台比较好的服务器做master,如果可以在选择一台做为master的备份服务器最好.然后其他的服务器当chunkserver. 为了方便说明问题,我这 ...
- C# 集合性能比较(代码测试)
using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...