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(/</g, '<').replace(/>/g, '>').replace(/"/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">
<html xmlns="http://www.w3.org/1999/xhtml">
<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/", "http://blog.csdn.net/grzx2210")
            + "<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/", "http://blog.csdn.net/grzx2210");
            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 οnlοad="Test();">
    <div id="result1">
    </div>
    <div id="result2">
    </div>
    <div id="result3">
    </div>
</body>
</html>

 

效果:

V_U2)}MSY6JP}9DS4~ZHP}O

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值