﻿function StringHelper(){}

StringHelper.trim = function(s)
{
	s += "";
	return s.replace(/^\s+|\s+$/g,'');
};

StringHelper.isInt = function(s)
{
    return new RegExp(/^(0|[1-9][0-9]*)$/).test(this.trim(s));
};

StringHelper.isCleanString = function(s)
{
    return new RegExp(/^[A-Za-z0-9_]+$/).test(this.trim(s));
};

StringHelper.isEmail = function(s)
{
    return new RegExp(/^(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)$/).test(this.trim(s));
};

StringHelper.isEmpty = function(s)
{
	return this.trim(s).length == 0;
};

StringHelper.buildFlatXmlString = function(rootName, arrNames, arrValues)
{
	var returnVal = ("<" + rootName + ">");
	for(var i = 0; i < arrNames.length; i++)
	{
		returnVal += ("<" + arrNames[i] + ">");
		if(arrValues[i] != null) returnVal += this.encodeXml(arrValues[i]);
		returnVal += ("</" + arrNames[i] + ">");
	}
	returnVal += ("</" + rootName + ">");
	return returnVal;
};

StringHelper.encodeXml = function(s)
{
	s = s.replace(/\x26/g,"&#38;");     //&
    s = s.replace(/\x3c/g,"&#60;");     //<
    s = s.replace(/\x3e/g,"&#62;");     //>
    s = s.replace(/\x22/g,"&#34;");     //"
    s = s.replace(/\x27/g,"&#39;");     //'
    return s;
};

// 对Date的扩展，将 Date 转化为指定格式的String    
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，    
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)    
// 例子：    
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423    
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18    
Date.prototype.Format = function(fmt)    
{    
    var o = {    
    "M+" : this.getMonth()+1, //月份    
    "d+" : this.getDate(), //日    
    "h+" : this.getHours(), //小时    
    "m+" : this.getMinutes(), //分    
    "s+" : this.getSeconds(), //秒    
    "q+" : Math.floor((this.getMonth()+3)/3), //季度    
    "S" : this.getMilliseconds() //毫秒    
    };    
    if(/(y+)/.test(fmt))    
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));    
    for(var k in o)    
    if(new RegExp("("+ k +")").test(fmt))    
    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));    
    return fmt;    
}   

StringHelper.NowDateFormatStr = function(s)
{
    return (new Date()).Format(s);
}

String.prototype.getBytesLength = function () {
    return this.replace(/[^\x00-\xff]/gi, "--").length;
}

String.prototype.removeCharAt = function (index) {
    var string_one = this.slice(0, index);   
    var string_two = this.slice(index + 1, this.length);   
    var final_string = string_one.concat(string_two);   
    return final_string; 
//    var retStr = this;
//    if (index <= this.length) {
//        if (index === 0) {
//            retStr = this.substring(1);
//        } else {
//            if (index == this.length - 1) {
//                retStr = this.substring(0, this.length - 1);
//            } else {
//                retStr = this.substring(0, index) + this.substring(index + 1);
//            }
//        }
//    }
//    return retStr;
}
String.prototype.intercept = function (length) {
    var s = this;
    var len = s.getBytesLength();

    while (len > length) {
        s = s.removeCharAt(s.length - 1);
        len = s.getBytesLength();
    }

    return s;
}
