有时候觉得js内置的方法不够用.可自己扩充.

下面是我扩充的几个方法.

为了避免变量冲出.覆盖.利用自执行函数实现.

  1. +function (a) {
  2. a.fn = a.prototype;
  3. var fn = {
  4. /**
  5. * 进制转换
  6. * @param to
  7. * @returns {string}
  8. */
  9. toBits: function (to) {
  10. var bits = [];
  11. var t = this;
  12. var i = 0;
  13. for (i; i < t.length; i++) {
  14. var code = t.charCodeAt(i);
  15. bits.push(code.toString(to));
  16. }
  17. bits.reverse();
  18. return bits.join("");
  19. },
  20. /**
  21. * 去除右变指定字符串.默认空白
  22. * @returns {XML|string|void|*}
  23. */
  24. rtrim: function () {
  25. var replace = arguments[0] || "\\s";
  26. var r = new RegExp("(^" + replace + "{1,})");
  27. return this.replace(r, '');
  28. },
  29. /**
  30. * 去除左边指定字符串.默认空白
  31. * @returns {XML|string|void|*}
  32. */
  33. ltrim: function () {
  34. var replace = arguments[0] || "\\s";
  35. var r = new RegExp("(" + replace + "{1,}$)");
  36. return this.replace(r, '');
  37. },
  38. /**
  39. * 去除两边指定字符串.默认空白
  40. * @returns {XML|string|void|*}
  41. */
  42. trim: function () {
  43. var str = this, a = arguments;
  44. str = str.ltrim.apply(str.rtrim.apply(str, a), a);
  45. return str;
  46. },
  47. str_repeat: function (i, m) {
  48. for (var o = []; m > 0; o[--m] = i);
  49. return o.join('');
  50. },
  51. /**
  52. * c的sprintf实现
  53. * @returns {string}
  54. */
  55. sprintf: function () {
  56. var i = 0, a, f = this.toString(), o = [], m, p, c, x, s = '';
  57. while (f) {
  58. if (m = /^[^\x25]+/.exec(f)) {
  59. o.push(m[0]);
  60. }
  61. else if (m = /^\x25{2}/.exec(f)) {
  62. o.push('%');
  63. }
  64. else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
  65. if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) {
  66. throw('Too few arguments.');
  67. }
  68. if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) {
  69. throw('Expecting number but found ' + typeof(a));
  70. }
  71. switch (m[7]) {
  72. case 'b':a = a.toString(2);break;
  73. case 'c':a = this.fromCharCode(a); break;
  74. case 'd':a = parseInt(a);break;
  75. case 'e':a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
  76. case 'f':a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a);break;
  77. case 'o':a = a.toString(8);break;
  78. case 's':a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a);break;
  79. case 'u':a = Math.abs(a);break;
  80. case 'x':a = a.toString(16); break;
  81. case 'X':a = a.toString(16).toUpperCase();break;
  82. }
  83. a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+' + a : a);
  84. c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
  85. x = m[5] - String(a).length - s.length;
  86. p = m[5] ? this.str_repeat(c, x) : '';
  87. o.push(s + (m[4] ? a + p : p + a));
  88. }
  89. else {
  90. throw('Huh ?!');
  91. }
  92. f = f.substring(m[0].length);
  93. }
  94. return o.join('');
  95. }
  96.  
  97. };
  98. for (var i in fn) {
  99. a.fn[i] = fn[i];
  100. }
  101. window.String = a;
  102. }(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. (转)android ndk 给结构体赋值的方法

    转自:http://www.cnweblog.com/fly2700/archive/2012/03/21/320083.html 1,java 代码 结构体定义 public class Media ...

  2. C# String 与 byte 互转

    String转换为byte数组用byte[] arr = System.Text.Encoding.Default.GetBytes("abcde") byte数组转换为Strin ...

  3. 前端开发者使用JS框架的三个等级

    目前前端开发者使用JS框架是种很普遍的现象,因为框架可以加快开发速度,同时避免各类浏览器的兼容性问题.不过同样是用框架开发,不同开发者的境界水平还是有一定差距,本文将这些前端开发者分为三个等级. 第一 ...

  4. ZendFramework2 源码分析 index.php

    <?php /** * This makes our life easier when dealing with paths. Everything is relative * to the a ...

  5. linux的一点一滴---open

    open函数用于打开和创建一个文件. 所需头文件: #include<sys/types.h> #include <sys/stat.h> #include <fcntl ...

  6. js序列化json对象

    SerializeJsonToStr : function( oJson ) { if( oJson == null ) return "null"; if( typeof(oJs ...

  7. JS编码解码详解

    今天在整理 js编码解码方法时,在网上搜资料,发现一篇文章讲的不错,讲解的非常简单明了,于是乎就想转载过来,却发现无法转载到博客园,最后只能卑鄙的摘抄过来.js编码解码就是将一些对URL和数据库敏感的 ...

  8. SqlServer sys.partition_view

    --查看partition的四个视图 select * from sys.partition_functions--查看分区函数 select * from sys.partition_paramet ...

  9. WPF/ArcGIS Engine三维开发和EVC3/4升级到VS项目建议(转)

    系统环境:Windows 7 专业版,Visual Studio 2010,ArcGIS Engine 9.3 1.创建项目 创建一个WPF的项目,必须选择.Net framework 3.5(AE9 ...

  10. 2014第3周三JS进阶书籍

    本来想尝试每天回答或看已解决的3个问题来学习总结今天的知识点,看了下博文里面的问答,在问的和已解决的都提不起兴趣.就看了下知识库里面一些文章,把里面感觉好的段落再摘录一下,为自己再看时备忘. 第一阶段 ...