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

简介:

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

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

ExpandedBlockStart.gif
复制代码
; String.format  =   function () { 
    
var  s  =  arguments[ 0 ]; 
    
for  ( var  i  =   0 ; i  <  arguments.length  -   1 ; i ++ ) { 
        
var  reg  =   new  RegExp( " \\{ "   +  i  +   " \\} " " gm " ); 
        s 
=  s.replace(reg, arguments[i  +   1 ]); 
    }

    
return  s; 
};


String.prototype.endsWith 
=   function (suffix) { 
    
return  ( this .substr( this .length  -  suffix.length)  ===  suffix); 
};

String.prototype.startsWith 
=   function (prefix) { 
    
return  ( this .substr( 0 , prefix.length)  ===  prefix); 
};

String.prototype.isPositiveInteger 
=   function () { 
    
return  ( new  RegExp( / ^[1-9]\d*$ / ).test( this )); 
};

String.prototype.trim 
=   function () { 
    
return   this .replace( / (^\s*)|(\s*$)|\r|\n / g,  "" ); 
};

String.prototype.trimLeft 
=   function () { 
    
return   this .replace( / (^\s*)|\r|\n / g,  "" ); 
};

String.prototype.trimRight 
=   function () { 
    
return   this .replace( / (\s*$)|\r|\n / g,  "" ); 
};

String.prototype.isInteger 
=   function () { 
    
return  ( new  RegExp( / ^\d+$ / ).test( this )); 
}; 
String.prototype.isNumber 
=   function (value, element) { 
    
return  ( new  RegExp( / ^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$ / ).test( this )); 
};

String.prototype.isValidMail 
=   function () { 
    
return  ( new  RegExp( / ^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$ / ).test( this .trim())); 
};

String.prototype.isPhone 
=   function () { 
    
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 )); 
};

String.prototype.isURL 
=   function () { 
    
return  ( new  RegExp( / ^[a-zA-z]+:\ / \ / (\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ / ).test( this )); 
};

String.prototype.trans 
=   function () { 
    
return   this .replace( / &lt; / g,  ' < ' ).replace( / &gt; / g,  ' > ' ).replace( / &quot; / g,  ' " ' ); 
};


function  StringBuilder() { 
    
var  sb  =   new  Array(); 
    
if  (arguments[ 0 !=  undefined  &&  arguments[ 0 !=   null ) { 
        sb[
0 =  arguments[ 0 ]; 
    } 
    
this .append  =   function (str) { 
        sb[sb.length] 
=  str; 
    }; 
    
this .appendFormat  =   function () { 
        
var  s  =  arguments[ 0 ]; 
        
for  ( var  i  =   0 ; i  <  arguments.length  -   1 ; i ++ ) { 
            
var  reg  =   new  RegExp( " \\{ "   +  i  +   " \\} " " gm " ); 
            s 
=  s.replace(reg, arguments[i  +   1 ]); 
        } 
        sb[sb.length] 
=  s; 
    }; 
    
this .toString  =   function () { 
        
/*         var s = ""; 
        for (var i = 0; i < sb.length; i++) { 
        s += sb[i]; 
        } 
        return s;
*/  
        
if  (arguments[ 0 !=  undefined  &&  arguments[ 0 !=   null ) { 
            
return  sb.join(arguments[ 0 ]); 
        } 
        
return  sb.join( "" ); 
    }; 
    
this .replace  =   function (index, str) { 
        sb[index] 
=  str; 
    }; 
    
this .replaceFormat  =   function () { 
        
var  s  =  arguments[ 1 ]; 
        
for  ( var  i  =   0 ; i  <  arguments.length  -   2 ; i ++ ) { 
            
var  reg  =   new  RegExp( " \\{ "   +  i  +   " \\} " " gm " ); 
            s 
=  s.replace(reg, arguments[i  +   2 ]); 
        } 
        
this .replace(arguments[ 0 ], s); 
    }; 
    
this .remove  =   function (index) { 
        
for  ( var  i  =  index  +   1 ; i  <  sb.length; i ++ ) { 
            sb[i 
-   1 =  sb[i]; 
        } 
        sb.length 
=  sb.length  -   1 ;

    }; 
    
this .insert  =   function (index, str) { 
        
var  len  =  sb.length  +   1
        
for  ( var  i  =  index; i  <  len; i ++ ) { 
            sb[i 
+   1 =  sb[i]; 
        } 
        sb[index] 
=  str; 
    }; 
    
this .insertFormat  =   function () { 
        
var  s  =  arguments[ 1 ]; 
        
for  ( var  i  =   0 ; i  <  arguments.length  -   2 ; i ++ ) { 
            
var  reg  =   new  RegExp( " \\{ "   +  i  +   " \\} " " gm " ); 
            s 
=  s.replace(reg, arguments[i  +   2 ]); 
        } 
        
this .insert(arguments[ 0 ], s); 
    }; 
    
this .length  =   function () { 
        
return  sb.length; 
    }; 
    
this .appendLine  =   function () { 
        
if  (arguments[ 0 !=  undefined  &&  arguments[ 0 !=   null ) { 
            
this .append(arguments[ 0 ]); 
        } 
        
else  { 
            
this .append( " \r\n " ); 
        } 
    } 
}; 
/*  TODO:test utils 
var sb = new StringBuilder(true); 
sb.append("123"); 
sb.appendFormat("{0}+{1}", 22, "22"); 
sb.appendFormat("{0}+{1}", 3333, "333"); 
//alert(sb.toString()); 
sb.insert(1, " test insert "); 
sb.insertFormat(1, "{0}***{1}", 111, "11 "); 
sb.replaceFormat(0, "{0}%%%{1}", 000, "00"); 
alert(sb.toString(" g "));
*/  
function  Uri(urlstr) { 
    
var  uri  =  urlstr; 
    
if  (uri  ==  undefined  ||  uri  ==   null   ||  uri  ==   "" ) { 
        uri 
=  window.location.href; 
    }; 
    
this .Host  =   function () { 
        
var  r  =  uri.split( " ? " ); 
        
if  (r.length  >   0 ) { 
            
return  r[ 0 ]; 
        } 
        
return   ""
    }; 
    
this .searchString  =   function () { 
        
var  r  =  uri.split( " ? " ); 
        
if  (r.length  >   1 ) { 
            
return  unescape(r[ 1 ]); 
        } 
        
return   ""
    }; 
    
this .Params  =   function () { 
        
var  search  =   this .searchString(); 
        
if  (search  ==   ""
            
return   null
        
var  obj  =   new  Array(); 
        
var  pair  =  search.split( " & " ); 
        
if  (pair.length  >   0 ) {

            
for  ( var  i  =   0 ; i  <  pair.length; i ++ ) {

                
var  pairArr  =  pair[i].split( " = " ); 
                obj[pairArr[
0 ]]  =  pairArr[ 1 ]; 
            } 
        } 
        
return  obj; 
    }; 
    
this .QueryParam  =   function (key, def) { 
        
var  obj  =   this .Params(); 
        
if  (obj  !=   null ) { 
            
var  value  =  obj[key]; 
            
if  (value  !=  undefined  &&  value  !=   null ) { 
                
return  value; 
            } 
        } 
        
return  def; 
    }; 
}


复制代码

 测试代码:

复制代码
ExpandedBlockStart.gif 代码


<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22 >  
< html  xmlns ="http://www.w3.org/1999/xhtml%22> 
<head> 
    <title></title>    
    <style type="
text/css" >  
        body 
        { 
            background-color: Black; 
        } 
        div 
        { 
            border-bottom-width: 1px; 
            border-left-width: 0px; 
            border-top-width: 1px; 
            border-right-width: 0px; 
            border-style: solid; 
            border-color: Lime; 
            width: 98%; 
            margin: 8,8; 
            padding: 10px; 
            background-color: Black; 
            color: Olive; 
        } 
    
</ style >

    
< script  src ="Wolf.Utils.JSExtesion.js"  type ="text/javascript" ></ script >

    
< script  type ="text/javascript" >

        
function  StringTest() {

            document.getElementById(
" result1 " ).innerHTML  =  String.format( " My blog : cnBlogs:{0} ,CSDN :{1} " " http://www.cnblogs.com/whitewolf/%22,  " http: // blog.csdn.net/grzx2210%22) 
             +   " <br/> "   +   "  Wolf  " .trim()  +   "  Wolf  " .trimLeft()  +   "  Wolf  " .trimRight()  +   " 122 " .isInteger(); 
        }

        
function  StringBuilderTest() { 
            
var  sb  =   new  StringBuilder(); 
            sb.appendFormat(
" My blog : cnBlogs:{0} ,CSDN :{1} " " http://www.cnblogs.com/whitewolf/%22,  " http: // blog.csdn.net/grzx2210%22); 
            sb.append( " <br/> " ); 
            sb.append(
"  remove " ); 
            sb.remove(
2 ); 
            sb.append(
" whitewolf " ); 
            sb.appendLine(
" <br/> " ); 
            document.getElementById(
" result2 " ).innerHTML  =   " tostring() "   +  sb.toString()  +   " <br/>tostring(';') "   +  sb.toString( " ; " ); 
        } 
        
function  UriTest() { 
            
var  uri  =   new  Uri(); 
            document.getElementById(
" result3 " ).innerHTML  =   " searchString: "   +  uri.searchString  +   " <br/>id= "   +  uri.QueryParam( " id " " id empty " ); 
        } 
        
function  Test() { 
            StringTest(); 
            StringBuilderTest(); 
            UriTest();

        }; 
    
</ script >

</ head >  
< body  onload ="Test();" >  
    
< div  id ="result1" >  
    
</ div >  
    
< div  id ="result2" >  
    
</ div >  
    
< div  id ="result3" >  
    
</ div >  
</ body >  
</ html >  

复制代码

 

 

效果:

V_U2)}MSY6JP}9DS4~ZHP}O


作者:破  狼 
出处:http://www.cnblogs.com/whitewolf/ 
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼。http://www.cnblogs.com/whitewolf/archive/2010/11/19/1881490.html


相关文章
|
2月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
47 1
|
4天前
|
安全 Java
String、StringBuffer、StringBuilder的区别
这篇文章讨论了Java中String、StringBuffer和StringBuilder的区别。String是不可变的,每次操作都会产生新的对象,效率低且浪费内存。StringBuilder可以在原字符串基础上进行操作,不开辟额外内存,弥补了String的缺陷。StringBuffer和StringBuilder类似,但StringBuffer的方法是线程安全的。文章还列举了StringBuffer的常用方法,并提供了使用示例代码。最后总结了这三者的主要区别。
String、StringBuffer、StringBuilder的区别
|
3天前
|
JavaScript 前端开发 Python
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
JavaScript写个.ts视频文件Url生成器,使用了string.padStart
|
7天前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
20 2
|
14天前
|
安全 Java
Java StringBuffer 和 StringBuilder 类详解
在 Java 中,`StringBuffer` 和 `StringBuilder` 用于操作可变字符串,支持拼接、插入、删除等功能。两者的主要区别在于线程安全性和性能:`StringBuffer` 线程安全但较慢,适用于多线程环境;`StringBuilder` 非线程安全但更快,适合单线程环境。选择合适的类取决于具体的应用场景和性能需求。通常,在不需要线程安全的情况下,推荐使用 `StringBuilder` 以获得更好的性能。
|
2月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
5天前
|
JavaScript 前端开发
今天被JavaScript的String型和数字型的+运算撞了一下腰。
今天被JavaScript的String型和数字型的+运算撞了一下腰。
|
2月前
|
安全 Java API
Java系类 之 String、StringBuffer和StringBuilder类的区别
这篇文章讨论了Java中`String`、`StringBuffer`和`StringBuilder`三个类的区别,其中`String`是不可变的,而`StringBuffer`是线程安全的可变字符串类,`StringBuilder`是非线程安全的可变字符串类,通常在单线程环境下性能更优。
Java系类 之 String、StringBuffer和StringBuilder类的区别
|
2月前
|
安全 Java
【Java基础面试二十七】、说一说StringBuffer和StringBuilder有什么区别
这篇文章介绍了Java中StringBuffer和StringBuilder的区别:StringBuffer是线程安全的,而StringBuilder是非线程安全的,因此在单线程环境下优先推荐使用StringBuilder以获得更好的性能。
|
2月前
|
前端开发 JavaScript 程序员
聊聊前端 JavaScript 的扩展运算符 “...“ 的使用场景
聊聊前端 JavaScript 的扩展运算符 “...“ 的使用场景
下一篇
无影云桌面