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 ...
随机推荐
- OFBiz应用https与http方式访问切换
url.properties port.https.enabled=N port.https=8444 force.https.host=
- MySQL学习笔记(4) - 创建数据库
1.建立一个简单的数据库 CREATE DATABASE t1: 图中如果未打:号,系统会等待直到用户输入结束符才会之行语句. 2.查看当前服务器下数据库列表 SHOW DATABASES; 必须是D ...
- R语言数据合并使用merge数据追加使用rbind和cbind
R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...
- JS+html实现简单的飞机大战
摘要:通过原生的js+html实现简单的飞机大战小游戏效果,如图所示: 实现代码如下: 1.自己的飞机实现 飞机html: <!DOCTYPE html> <html lang=&q ...
- 解决 setOnItemClickListener,setOnScrollListener与setOnTouchListener事件冲突问题
代码案例如下: lvXxsdMore.setOnItemClickListener(xxsdMoreListener); //对listView 注册onclick事件 lvXxsdMore.setO ...
- hdu 3874 Necklace(bit树+事先对查询区间右端点排序)
Mery has a beautiful necklace. The necklace is made up of N magic balls. Each ball has a beautiful v ...
- hdu1172猜数字(暴力枚举)
猜数字 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 怎样使用LaTeX输入葡萄牙语等语言中的特殊字符
论文中引用了大名鼎鼎ER random graph model,但是这两位的名字不太好打,发现Google Scholar中直接下载的bib文件中也是错的.找了一会,发现转义字符已经定义得很好了.只是 ...
- 不可或缺的企业OA面临问题,以及解决建议 软件定制开发 森普演示平台
---恢复内容开始--- 随着信息时代的来临,企业管理也相应的信息化,各种管理软件相继而出,各行各业的信息化有过成功,也有过失败(注:是以该项目是否达到用户的预期目标而言).据统计在信息化失败的案例中 ...
- telnet 命令使用详解
1..关于NTLM验证由于Telnet功能太强大,而且也是入侵者使用最频繁的登录手段之一,因此微软公司为Telnet添加了身份验证,称为NTLM验证,它要求Telnet终端除了需要有Telnet服务主 ...