有时候觉得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. OFBiz应用https与http方式访问切换

    url.properties port.https.enabled=N port.https=8444 force.https.host=

  2. MySQL学习笔记(4) - 创建数据库

    1.建立一个简单的数据库 CREATE DATABASE t1: 图中如果未打:号,系统会等待直到用户输入结束符才会之行语句. 2.查看当前服务器下数据库列表 SHOW DATABASES; 必须是D ...

  3. R语言数据合并使用merge数据追加使用rbind和cbind

    R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...

  4. JS+html实现简单的飞机大战

    摘要:通过原生的js+html实现简单的飞机大战小游戏效果,如图所示: 实现代码如下: 1.自己的飞机实现 飞机html: <!DOCTYPE html> <html lang=&q ...

  5. 解决 setOnItemClickListener,setOnScrollListener与setOnTouchListener事件冲突问题

    代码案例如下: lvXxsdMore.setOnItemClickListener(xxsdMoreListener); //对listView 注册onclick事件 lvXxsdMore.setO ...

  6. hdu 3874 Necklace(bit树+事先对查询区间右端点排序)

    Mery has a beautiful necklace. The necklace is made up of N magic balls. Each ball has a beautiful v ...

  7. hdu1172猜数字(暴力枚举)

    猜数字 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  8. 怎样使用LaTeX输入葡萄牙语等语言中的特殊字符

    论文中引用了大名鼎鼎ER random graph model,但是这两位的名字不太好打,发现Google Scholar中直接下载的bib文件中也是错的.找了一会,发现转义字符已经定义得很好了.只是 ...

  9. 不可或缺的企业OA面临问题,以及解决建议 软件定制开发 森普演示平台

    ---恢复内容开始--- 随着信息时代的来临,企业管理也相应的信息化,各种管理软件相继而出,各行各业的信息化有过成功,也有过失败(注:是以该项目是否达到用户的预期目标而言).据统计在信息化失败的案例中 ...

  10. telnet 命令使用详解

    1..关于NTLM验证由于Telnet功能太强大,而且也是入侵者使用最频繁的登录手段之一,因此微软公司为Telnet添加了身份验证,称为NTLM验证,它要求Telnet终端除了需要有Telnet服务主 ...