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 ...
随机推荐
- (转)android ndk 给结构体赋值的方法
转自:http://www.cnweblog.com/fly2700/archive/2012/03/21/320083.html 1,java 代码 结构体定义 public class Media ...
- C# String 与 byte 互转
String转换为byte数组用byte[] arr = System.Text.Encoding.Default.GetBytes("abcde") byte数组转换为Strin ...
- 前端开发者使用JS框架的三个等级
目前前端开发者使用JS框架是种很普遍的现象,因为框架可以加快开发速度,同时避免各类浏览器的兼容性问题.不过同样是用框架开发,不同开发者的境界水平还是有一定差距,本文将这些前端开发者分为三个等级. 第一 ...
- ZendFramework2 源码分析 index.php
<?php /** * This makes our life easier when dealing with paths. Everything is relative * to the a ...
- linux的一点一滴---open
open函数用于打开和创建一个文件. 所需头文件: #include<sys/types.h> #include <sys/stat.h> #include <fcntl ...
- js序列化json对象
SerializeJsonToStr : function( oJson ) { if( oJson == null ) return "null"; if( typeof(oJs ...
- JS编码解码详解
今天在整理 js编码解码方法时,在网上搜资料,发现一篇文章讲的不错,讲解的非常简单明了,于是乎就想转载过来,却发现无法转载到博客园,最后只能卑鄙的摘抄过来.js编码解码就是将一些对URL和数据库敏感的 ...
- SqlServer sys.partition_view
--查看partition的四个视图 select * from sys.partition_functions--查看分区函数 select * from sys.partition_paramet ...
- WPF/ArcGIS Engine三维开发和EVC3/4升级到VS项目建议(转)
系统环境:Windows 7 专业版,Visual Studio 2010,ArcGIS Engine 9.3 1.创建项目 创建一个WPF的项目,必须选择.Net framework 3.5(AE9 ...
- 2014第3周三JS进阶书籍
本来想尝试每天回答或看已解决的3个问题来学习总结今天的知识点,看了下博文里面的问答,在问的和已解决的都提不起兴趣.就看了下知识库里面一些文章,把里面感觉好的段落再摘录一下,为自己再看时备忘. 第一阶段 ...