JS的一些扩展:String、StringBuilder、Uri

简介:

在最近一个小屁项目中,没有服务端(其实服务端是人家早已经写好的服务),留给我的就只有一大堆的Html和JS,写的好烦躁,所以就写了几个扩展。

多个不说的,这里只是记录,code附上,便以后查询:

 
  1. 代码   
  2.  
  3. ; String.format = function() {   
  4.     var s = arguments[0];   
  5.     for (var i = 0; i < arguments.length - 1; i++) {   
  6.         var reg = new RegExp("\\{" + i + "\\}""gm");   
  7.         s = s.replace(reg, arguments[i + 1]);   
  8.     }  
  9.  
  10.     return s;   
  11. };  
  12.  
  13.  
  14. String.prototype.endsWith = function(suffix) {   
  15.     return (this.substr(this.length - suffix.length) === suffix);   
  16. };  
  17.  
  18. String.prototype.startsWith = function(prefix) {   
  19.     return (this.substr(0, prefix.length) === prefix);   
  20. };  
  21.  
  22. String.prototype.isPositiveInteger = function() {   
  23.     return (new RegExp(/^[1-9]\d*$/).test(this));   
  24. };  
  25.  
  26. String.prototype.trim = function() {   
  27.     return this.replace(/(^\s*)|(\s*$)|\r|\n/g, "");   
  28. };  
  29.  
  30. String.prototype.trimLeft = function() {   
  31.     return this.replace(/(^\s*)|\r|\n/g, "");   
  32. };  
  33.  
  34. String.prototype.trimRight = function() {   
  35.     return this.replace(/(\s*$)|\r|\n/g, "");   
  36. };  
  37.  
  38. String.prototype.isInteger = function() {   
  39.     return (new RegExp(/^\d+$/).test(this));   
  40. };   
  41. String.prototype.isNumber = function(value, element) {   
  42.     return (new RegExp(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/).test(this));   
  43. };  
  44.  
  45. String.prototype.isValidMail = function() {   
  46.     return (new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(this.trim()));   
  47. };  
  48.  
  49. String.prototype.isPhone = function() {   
  50.     return (new RegExp(/(^([0-9]{3,4}[-])?\d{3,8}(-\d{1,6})?$)|(^\([0-9]{3,4}\)\d{3,8}(\(\d{1,6}\))?$)|(^\d{3,8}$)/).test(this));   
  51. };  
  52.  
  53. String.prototype.isURL = function() {   
  54.     return (new RegExp(/^[a-zA-z]+:\/\/(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/).test(this));   
  55. };  
  56.  
  57. String.prototype.trans = function() {   
  58.     return this.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"');   
  59. };  
  60.  
  61.  
  62. function StringBuilder() {   
  63.     var sb = new Array();   
  64.     if (arguments[0] != undefined && arguments[0] != null) {   
  65.         sb[0] = arguments[0];   
  66.     }   
  67.     this.append = function(str) {   
  68.         sb[sb.length] = str;   
  69.     };   
  70.     this.appendFormat = function() {   
  71.         var s = arguments[0];   
  72.         for (var i = 0; i < arguments.length - 1; i++) {   
  73.             var reg = new RegExp("\\{" + i + "\\}""gm");   
  74.             s = s.replace(reg, arguments[i + 1]);   
  75.         }   
  76.         sb[sb.length] = s;   
  77.     };   
  78.     this.toString = function() {   
  79.         /*        var s = "";   
  80.         for (var i = 0; i < sb.length; i++) {   
  81.         s += sb[i];   
  82.         }   
  83.         return s;*/   
  84.         if (arguments[0] != undefined && arguments[0] != null) {   
  85.             return sb.join(arguments[0]);   
  86.         }   
  87.         return sb.join("");   
  88.     };   
  89.     this.replace = function(index, str) {   
  90.         sb[index] = str;   
  91.     };   
  92.     this.replaceFormat = function() {   
  93.         var s = arguments[1];   
  94.         for (var i = 0; i < arguments.length - 2; i++) {   
  95.             var reg = new RegExp("\\{" + i + "\\}""gm");   
  96.             s = s.replace(reg, arguments[i + 2]);   
  97.         }   
  98.         this.replace(arguments[0], s);   
  99.     };   
  100.     this.remove = function(index) {   
  101.         for (var i = index + 1; i < sb.length; i++) {   
  102.             sb[i - 1] = sb[i];   
  103.         }   
  104.         sb.length = sb.length - 1;  
  105.  
  106.     };   
  107.     this.insert = function(index, str) {   
  108.         var len = sb.length + 1;   
  109.         for (var i = index; i < len; i++) {   
  110.             sb[i + 1] = sb[i];   
  111.         }   
  112.         sb[index] = str;   
  113.     };   
  114.     this.insertFormat = function() {   
  115.         var s = arguments[1];   
  116.         for (var i = 0; i < arguments.length - 2; i++) {   
  117.             var reg = new RegExp("\\{" + i + "\\}""gm");   
  118.             s = s.replace(reg, arguments[i + 2]);   
  119.         }   
  120.         this.insert(arguments[0], s);   
  121.     };   
  122.     this.length = function() {   
  123.         return sb.length;   
  124.     };   
  125.     this.appendLine = function() {   
  126.         if (arguments[0] != undefined && arguments[0] != null) {   
  127.             this.append(arguments[0]);   
  128.         }   
  129.         else {   
  130.             this.append("\r\n");   
  131.         }   
  132.     }   
  133. };   
  134. /* TODO:test utils   
  135. var sb = new StringBuilder(true);   
  136. sb.append("123");   
  137. sb.appendFormat("{0}+{1}", 22, "22");   
  138. sb.appendFormat("{0}+{1}", 3333, "333");   
  139. //alert(sb.toString());   
  140. sb.insert(1, " test insert ");   
  141. sb.insertFormat(1, "{0}***{1}", 111, "11 ");   
  142. sb.replaceFormat(0, "{0}%%%{1}", 000, "00");   
  143. alert(sb.toString(" g "));*/   
  144. function Uri(urlstr) {   
  145.     var uri = urlstr;   
  146.     if (uri == undefined || uri == null || uri == "") {   
  147.         uri = window.location.href;   
  148.     };   
  149.     this.Host = function() {   
  150.         var r = uri.split("?");   
  151.         if (r.length > 0) {   
  152.             return r[0];   
  153.         }   
  154.         return "";   
  155.     };   
  156.     this.searchString = function() {   
  157.         var r = uri.split("?");   
  158.         if (r.length > 1) {   
  159.             return unescape(r[1]);   
  160.         }   
  161.         return "";   
  162.     };   
  163.     this.Params = function() {   
  164.         var search = this.searchString();   
  165.         if (search == "")   
  166.             return null;   
  167.         var obj = new Array();   
  168.         var pair = search.split("&");   
  169.         if (pair.length > 0) {  
  170.  
  171.             for (var i = 0; i < pair.length; i++) {  
  172.  
  173.                 var pairArr = pair[i].split("=");   
  174.                 obj[pairArr[0]] = pairArr[1];   
  175.             }   
  176.         }   
  177.         return obj;   
  178.     };   
  179.     this.QueryParam = function(key, def) {   
  180.         var obj = this.Params();   
  181.         if (obj != null) {   
  182.             var value = obj[key];   
  183.             if (value != undefined && value != null) {   
  184.                 return value;   
  185.             }   
  186.         }   
  187.         return def;   
  188.     };   
  189. }  
  190.  
  191.  
  192.  
  193. 复制代码 

测试代码:

 
  1. 代码   
  2.  
  3.  
  4.  
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22>   
  6. <html xmlns="http://www.w3.org/1999/xhtml%22>   
  7. <head>   
  8.     <title></title>      
  9.     <style type="text/css">   
  10.         body   
  11.         {   
  12.             background-color: Black;   
  13.         }   
  14.         div   
  15.         {   
  16.             border-bottom-width: 1px;   
  17.             border-left-width: 0px;   
  18.             border-top-width: 1px;   
  19.             border-right-width: 0px;   
  20.             border-style: solid;   
  21.             border-color: Lime;   
  22.             width: 98%;   
  23.             margin: 8,8;   
  24.             padding: 10px;   
  25.             background-color: Black;   
  26.             color: Olive;   
  27.         }   
  28.     </style>  
  29.  
  30.     <script src="Wolf.Utils.JSExtesion.js" type="text/javascript"></script>  
  31.  
  32.     <script type="text/javascript">  
  33.  
  34.         function StringTest() {  
  35.  
  36.             document.getElementById("result1").innerHTML = String.format("My blog : cnBlogs:{0} ,CSDN :{1}""http://www.cnblogs.com/whitewolf/%22, "http://blog.csdn.net/grzx2210%22)   
  37.             + "<br/>" + " Wolf ".trim() + " Wolf ".trimLeft() + " Wolf ".trimRight() + "122".isInteger();   
  38.         }  
  39.  
  40.         function StringBuilderTest() {   
  41.             var sb = new StringBuilder();   
  42.             sb.appendFormat("My blog : cnBlogs:{0} ,CSDN :{1}""http://www.cnblogs.com/whitewolf/%22, "http://blog.csdn.net/grzx2210%22);   
  43.             sb.append("<br/>");   
  44.             sb.append(" remove");   
  45.             sb.remove(2);   
  46.             sb.append("whitewolf");   
  47.             sb.appendLine("<br/>");   
  48.             document.getElementById("result2").innerHTML = "tostring()" + sb.toString() + "<br/>tostring(';')" + sb.toString(";");   
  49.         }   
  50.         function UriTest() {   
  51.             var uri = new Uri();   
  52.             document.getElementById("result3").innerHTML = "searchString:" + uri.searchString + "<br/>id=" + uri.QueryParam("id""id empty");   
  53.         }   
  54.         function Test() {   
  55.             StringTest();   
  56.             StringBuilderTest();   
  57.             UriTest();  
  58.  
  59.         };   
  60.     </script>  
  61.  
  62. </head>   
  63. <body onload="Test();">   
  64.     <div id="result1">   
  65.     </div>   
  66.     <div id="result2">   
  67.     </div>   
  68.     <div id="result3">   
  69.     </div>   
  70. </body>   
  71. </html>   
  72.  
  73.  
  74. 复制代码 

效果:

 






 本文转自 破狼 51CTO博客,原文链接:http://blog.51cto.com/whitewolfblog/834775,如需转载请自行联系原作者


相关文章
|
24天前
|
JavaScript 前端开发
JavaScript 中如何检测一个变量是一个 String 类型?
JavaScript 中如何检测一个变量是一个 String 类型?
21 2
|
14天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`&#39;1.2,2,3,4,5&#39;`)转换为对象数组。通过使用`split(&#39;,&#39;)`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
1月前
|
SQL JavaScript
js开发:请解释什么是ES6的模板字符串(template string),并给出一个示例。
ES6的模板字符串以反引号包围,支持变量和表达式插入以及多行书写。例如,插入变量值`Hello, ${name}!`,计算表达式`${num1 + num2}`,以及创建多行字符串。模板字符串保留原始空格和缩进,简化了字符串拼接,提高了代码可读性。
18 6
|
1月前
|
JavaScript 前端开发 Java
javascript中的String
javascript中的String
|
1月前
|
JavaScript 前端开发 索引
编程笔记 html5&css&js 067 JavaScript String数据类型
编程笔记 html5&css&js 067 JavaScript String数据类型
|
3月前
|
前端开发 JavaScript 算法
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
|
3月前
|
前端开发 JavaScript 索引
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
|
3月前
|
存储 前端开发 JavaScript
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
|
4月前
|
JavaScript 前端开发
JavaScript基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。
JavaScript基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。
30 0
|
4月前
|
JavaScript 前端开发
js基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。具体案例使用演示
js基础语法:包括变量声明、数据类型(Number, String, Boolean, Null, Undefined, Symbol, Object)、运算符、流程控制语句(if...else, switch, for, while, do...while)等。具体案例使用演示
34 1