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

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

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

; 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; 
    }; 
}

 测试代码:


代码

<!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> 

 

 

效果:

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

时间: 2024-09-17 03:47:16

JS的一些扩展:String、StringBuilder、Uri的相关文章

js实现prototype扩展的方法(字符串,日期,数组扩展)_javascript技巧

本文实例讲述了js实现prototype扩展的方法.分享给大家供大家参考,具体如下: String.prototype.isEmpty = function () { return !(/.?[^/s ]+/.test(this)); } //检测字符串是否为空 // 替换字符 String.prototype.reserve = function(type) { if (type == 'int') return this.replace(/^/d/g, ''); // 替换字符串中除了数字以

C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope

概要 在介绍StdExt的时候,我曾经提到,STL设计精良,但是以下几块仍然设计不 足(或缺失): allocator(内存管理) string(字符串处理/文本处理) parallel programming(并行编程) 关于内存管理,我们已经说得很多了.这里我们重点谈的是字符串处理/文本 处理相关的问题.本篇是<字符串处理完整参考>这个系列的第一篇. 历史 字符串处理/文本处理是一个历史悠久,并且相当复杂的一个话题.从简单到 字符串的比较(compare).连接(concat),到复杂的文

运行Node.js的IIS扩展iisnode安装配置笔记

 这篇文章主要介绍了运行Node.js的IIS扩展iisnode安装配置笔记,iisnode的扩展可以把Node.js程序托管到IIS,托管之后也意味着可以使用IIS里面的各种功能,需要的朋友可以参考下     今年年初打算用Node.js基于Express框架重写博客程序,从此告别ASP.NET.然而,我目前用的VPS是Windows Server系统.IIS服务器,如果让Express和IIS都监听80端口,明显会产生冲突.幸好,有一个叫做iisnode的扩展可以把Node.js程序托管到I

js数组方法扩展实现数组统计函数

 这篇文章主要介绍了js数组方法扩展,实现数组统计函数,需要的朋友可以参考下  代码如下: /**************************************************** *CreateBy:joe zhou *Description:数组统计函数 ****************************************************/ $.extend({     max: function (arr) {         return cacl(

asp.net 为什么把JS文件的扩展名写成ASHX

问题描述 asp.net为什么把JS文件的扩展名写成ASHX,来调用了在页面用<SCRIPTtype=text/javascriptsrc="files/mxl.ashx"></SCRIPT> 解决方案 解决方案二:ashx文件为后台,直接获取后台.解决方案三:估计是从ashx文件获取js代码,ashx文件里用Context.Response.Write("");输出js代码.解决方案四:引用2楼dalmeeme的回复: 估计是从ashx文件

对prototype.js进行的扩展

最近的项目中要使用ajax,于是对各种ajaxframework在进行比较之后,最终选择了prototype.js,由于prototype.js是一个非常基础的ajaxframework,需要根据项目需求自己来进行一些扩展,下面就是我所做的一些扩展,如有误,请指正! 我实现了一个Form.Element.ValidationObserver,这个类需要依赖Validation.js以及相应的css(validation-advice),该类是对表单中的单个元素通过ajax结合后台进行验证,其中因

java String/StringBuilder 方法

String 定义的对象不能被修改,修改其实是创建了一个新的对象. 如 : String s1 = "1"; s1 = s1+ "2";   本来s1 是指向"1"的一个对象 现在 s1是指向 "12" 的一个对象. s1 是一个新的对象.   String 中一些常用的方法:       ==  与equal()的 区别    == 是判断 两个字符串的地址是否相同  equal() 是判断 两个字符串的内容是否相同   当

【JS基础回顾】String对象及其常用属性以及方法

目的很简单,主要回顾下javascript里面String常用的一些属性以及方法,虽然经常使用,但其实一些细节没有注意到,总是等到用到的时候再去查有点浪费时间,因此总结了下加深印象 一.字符串的几种声明方式 var str = 'hello world !'; var str = String('hello world !'); var str = new String('hello world !'); var str = new Object('hello world !'); 二.常用St

mysql输出数据赋给js变量报unterminated string literal错误原因_javascript技巧

从mysql读取某一文本数据,付给js变量比如 复制代码 代码如下: <script type="text/javascript">var strs="苏润葡萄种植园依托沪宁高速和扬溧高速两大交通走廊,紧邻镇荣公路上党镇薛村段,离镇江市仅20公里,交通便利苏润葡萄种植园引进新品种. 新工艺.新技术和现代经营管理体制,采用大棚种植.目前主要品种有五个:夏黑.美人指.贵公子.黄蜜.金手指.苏润葡萄种植园还 ..."; document.write(strs)