zoukankan      html  css  js  c++  java
  • 操作类封装

    /*操作类封装 */
    /*调用方法 如下:
     * var str= new IStrManipulation();//实例化字符串处理接口
     * console.log(str.StrManipulation('StrManipulation',"111sss23123").getLength());
     * var convert =new IConvert();//实例化类型转换接口
     * console.log(convert.Convert('Convert',"11123123").IsPositiveInteger());
     * var date =new IDateTime();//实例化日期接口
     * var timestamp3 = 1403058804;
     * var newDate = new Date();
     * newDate.setTime(timestamp3 * 1000);
     * alert(date.DateTime('DateTime').DateFormat(newDate,"yyyy-MM-dd h:m:s"));
     * 
     * 
     * */
    var Interface = function (name, methods) {
            if (arguments.length != 2) {
                throw new Error("接口的长度不等于2");
            }
            this.Name = name;
            this.Method = [];
            for (var i = 0; i < methods.length; i++) {
                if(typeof methods[i]!== 'string') {
                    throw new Error("方法名不是 String 类型");
                }
                this.Method.push(methods[i]);
            }
       }
    Interface.ensureImplement = function (object) {
            if (arguments.length < 2) {
                throw new Error("没有接口被实例化");
            }
            for (var i = 1; i < arguments.length; i++) {
                var interface1 = arguments[i];
                if (interface1.constructor !== Interface) {
                    throw new Error("参数不等于接口");
                }
                for (var j = 0; j < interface1.Method.length; j++) {
                    var method = interface1.Method[j];
                    if (!object[method] || typeof object[method] !== 'function') {
                        throw new Error("实例不能继承接口");
                       
                    }
                }
            }
    }
    /*function implements(instance){ 
        for(var i = 1; i < arguments.length; i++) { 
            var interfaceName = arguments[i]; 
            var isFound = false; 
            for(var j = 0; j < instance.implementsInterfaces.length; j++) { 
                if(interfaceName == instance.implementsInterfaces[j]) { 
                    isFound = true; 
                    break; 
                } 
            } 
            if(!isFound)
                return false;
        } 
        return true;
    }*/
    var IBaseUnityFactory =(function(){
    
    });
    
    IBaseUnityFactory.prototype={
        CreateBaseFactory : function(model,val){
            var obj;
            switch(model){
                case 'StrManipulation':
                    instantiation =new Interface('instantiation',
                    ['getLength','getIndex','getReplace','getCount','getManyStr','getCharAt',
                    'getToLocaleUpperCase','getToLocaleLowerCase','getAnyUpperCase',
                    'getFirstUpperCase','getLastUpperCase','getFirstLowerCase','getLastLowerCase',
                    'getAnyLowerCase','getSplitStr','getSubStr','getSubString','getStrAsc','getStrDesc']);
                    obj=new StrManipulation(val);
                break;
                case 'Convert':
                     instantiation =new Interface('instantiation',
                    ['IsNumber','IsPositiveInteger','ConvertToNumber','ConvertToString',
                    'IsMoney','NumberToFixed','NumberToInteger','StringToParseInt','ConvertToAbs',
                    'StringToAscii','AsciiToString']);
                    obj=new Convert(val);
                break;
                case 'DateTime':
                    instantiation =new Interface('instantiation',
                    ['DateFormat','Now','CompareDate','GetDateDiff']);
                    obj=new DateTime();
                break;
            }
            //if(implements(instantiation)){
            Interface.ensureImplement(obj,instantiation);
            //}
            //else{
            //    console.log("没有接口实例化");
            //}
            return obj;
        }
    };
    //定义字符串处理抽象类
    var IStrManipulation=function(){
        
    };
    IStrManipulation.prototype={
        StrManipulation:function(model,val){
            var IFactory =new IBaseUnityFactory();
            var obj= IFactory.CreateBaseFactory(model,val);
            return obj;
        }
    };
    var StrManipulation=(function(val){
        if(val!=null && val !="" && typeof(val)!="undefined"){
            this.value=val;
        }
        else{
            console.log("传入字符串非法");
        }
    });
    StrManipulation.prototype={
                //返回字符串的长度
                getLength: function(){
                    try{
                        return this.value.length;
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //根据返回指定字符串的索引
                getIndex:function(str){
                    try{
                        return this.value.indexOf(str);
                    }catch(e){
                        console.log(e.message);
                    }
                    
                },
                //替换字符串
                getReplace:function(str1,str2){
                    try{
                        return this.value.replace(str1,str2);
                    }catch(e){
                        console.log(e.message);
                    }
                    
                },
                //获取字符串中指定的字符出现次数
                getCount:function(str){
                    try{
                        var index=-1,count=-1;
                        do{
                            index=this.value.indexOf(str,index+1);
                            count++;
                        }
                        while(index!=-1);
                        return count;
                    }catch(e){
                        console.log(e.message);
                    }
                    
                },
                //获取字符串最多次数的字符
                getManyStr:function(){
                    try{
                        var temp=-1;
                        var str="";
                        for(var i=0;i<this.value.length;i++)
                        {
                            var index=-1,count=-1;
                            do{
                                index=this.value.indexOf(value[i],index+1);
                                count++;
                            }
                            while(index!=-1){
                                if(temp<count){
                                    temp=count;
                                    str=value[i];
                                }    
                            };
                            
                        }
                        return str;
                    }catch(e){
                        console.log(e.message);
                    }        
                },
                //根据索引返回字符
                getCharAt:function(index){
                    try{
                        return this.value.charAt(index);
                    }catch(e){
                        console.log(e.message);
                    }        
                },
                //将字符串转换为大写
                getToLocaleUpperCase:function(){
                    try{
                        return this.value.toLocaleUpperCase();
                    }catch(e){
                        console.log(e.message);
                    }        
                },
                //将字符串转换为小写
                getToLocaleLowerCase:function(){
                    try{
                        return this.value.toLocaleLowerCase();
                    }catch(e){
                        console.log(e.message);
                    }    
                },
                //首字母大写其余都小写
                getFirstUpperCase:function(){
                    try{
                        return this.getToLocaleLowerCase().replace(this.getCharAt(0),
                                this.getCharAt(0).toLocaleUpperCase());
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //字符串末尾字母大写其余都小写
                getLastUpperCase:function(){
                    try{
                        return this.getToLocaleLowerCase().replace(
                                this.getCharAt(this.value.length),
                                this.getCharAt(this.value.length).toLocaleUpperCase());
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //字符串任意指定位置字符大写
                getAnyUpperCase:function(index){
                    try{
                        return this.getToLocaleLowerCase().replace(
                                this.getCharAt(index),
                                this.getCharAt(index).toLocaleUpperCase());
                    }catch(e){
                        console.log(e.message);
                    }
    
                },
                //首字母小写其余都大写
                getFirstLowerCase:function(){
                    try{
                        return this.getToLocaleUpperCase().replace(this.getCharAt(0),
                                this.getCharAt(0).toLocaleLowerCase());
                    }catch(e){
                        console.log(e.message);
                    }
    
                },
                //字符串末尾字母小写其余都大写
                getLastLowerCase:function(){
                    try{
                        return this.getToLocaleUpperCase().replace(
                                this.getCharAt(this.value.length),
                                this.getCharAt(this.value.length).toLocaleLowerCase());
                    }catch(e){
                        console.log(e.message);
                    }
    
                },
                //字符串任意指定位置字符小写
                getAnyLowerCase:function(index){
                    try{
                        return this.getToLocaleUpperCase().replace(
                                this.getCharAt(index),
                                this.getCharAt(index).toLocaleLowerCase());
                    }catch(e){
                        console.log(e.message);
                    }
    
                },
                //字符串转换为数组指定长度
                getSplitStr:function(separator,length){
                    try{
                        switch(arguments.length)
                        {
                            case 1:
                                return this.value.split(separator);
                            case 2:
                                return this.value.split(separator,length);
                        }
                    }catch(e){
                        console.log(e.message);
                    }    
                },
                //字符串截取返回一个从指定位置开始的指定长度的子字符串
                getSubStr:function(start,length){
                    try{
                        switch(arguments.length)
                        {
                            case 1:
                                return this.value.substr(start);
                            case 2:
                                return this.value.substr(start,length);
                        }
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //字符串截取提取字符串中介于两个指定下标之间的字符
                getSubString:function(start,length){
                    try{
                        switch(arguments.length)
                        {
                            case 1:
                                return this.value.substring(start);
                            case 2:
                                return this.value.substring(start,length);
                        }
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //字符串字母,数字顺序从小到大排列
                getStrAsc:function(){
                    try{
                        var tempArr=[];
                        for(var i=0;i<this.value.length;i++){
                            tempArr.push(this.getCharAt(i));
                        }
                        return tempArr.sort().join('');
                    }catch(e){
                        console.log(e.message);
                    }
                
                },
                //字符串字母,数字顺序从大到小排列
                getStrDesc:function(){
                    try{
                        var tempArr=[];
                        for(var i=0;i<this.value.length;i++){
                            tempArr.push(this.getCharAt(i));
                        }
                        return tempArr.sort().reverse().join('');
                    }catch(e){
                        console.log(e.message);
                    }
                }
    };
    //定义类型转换抽象类
    var IConvert=function(){
        
    };
    IConvert.prototype={
        Convert:function(model,val){
            var IFactory =new IBaseUnityFactory();
            var obj= IFactory.CreateBaseFactory(model,val);
            return obj;
        }
    };
    var Convert=(function(val){
        if(val!=null && val !="" && typeof(val)!="undefined"){
            this.value=val;
        }
        else{
            console.log("传入字符串非法");
        }
        this.GetRegPositiveInteger = (function (){
            return /^[1-9]d*$/g;
        });
        this.getRegMoney =(function(){
            return /(^[1-9]([0-9]+)?(.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9].[0-9]([0-9])?$)/g;
        });
    });
    Convert.prototype={
                //判断字符串只包含数字
                IsNumber:function(){
                    try{
                        return !isNaN(this.value);
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //判断字符串否是正整数
                IsPositiveInteger:function(){
                    try{
                         return (this.value.match(this.GetRegPositiveInteger())==this.value)
                                ?true:false;
                    }catch(e){
                        console.log(e.message);
                    }
                   
                },
                //将字符串转换为数字类型
                ConvertToNumber:function(){
                    try{
                        if(!this.IsNumber())
                        {
                            console.log("字符串包含除了数字之外非法字符");
                            return;
                        }
                        else{
                            return Number(this.value);
                        }
                    }catch(e){
                        console.log(e.message);
                    }
                    
                },
                //转换为字符串
                ConvertToString:function(){
                    try{
                        return this.value.toString();
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //判断金钱类型
                IsMoney:function(){
                    try{
                        return (this.value.match(this.getRegMoney())==this.value)
                                ?true:false;
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //保留小数 index 小数位数
                NumberToFixed:function(index){
                    try{
                        return this.ConvertToNumber().toFixed(index);
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //取整数
                NumberToInteger:function(functionName){
                    try{
                        switch(functionName)
                        {
                            case 'round'://四舍五入
                                return Math.round(this.ConvertToNumber());
                            case 'floor'://小于等于num的整数
                                return Math.floor(this.ConvertToNumber());
                            case 'parseInt'://小于等于num的整数,与floor的区别是parseInt参数可以是string类型,如'5abc'返回5
                                return parseInt(this.ConvertToNumber());
                            case 'ceil'://大于等于num的整数
                                return Math.ceil(this.ConvertToNumber());
                        }            
                    }    
                    catch(e){
                        console.log(e.message);
                    }
                },
                //字符串转整数
                StringToParseInt : function(){
                    try{
                        return parseInt(this.ConvertToString());
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //绝对值
                ConvertToAbs:function(){
                    try{
                        return Math.abs(this.ConvertToNumber());
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //string 转 Ascii
                StringToAscii:function(){
                    try{
                        return this.ConvertToString().charCodeAt();
                    }catch(e){
                        console.log(e.message);
                    }
                },
                //Ascii 转 string
                AsciiToString:function(){
                    try{
                        return String.fromCharCode(this.ConvertToString());
                    }catch(e){
                        console.log(e.message);
                        
                    }
                }
    };
    
    //定义日期时间类型抽象类
    var IDateTime=function(){
        
    };
    IDateTime.prototype={
        DateTime:function(model){
            var IFactory =new IBaseUnityFactory();
            var obj= IFactory.CreateBaseFactory(model);
            return obj;
        }
    };
    var DateTime=(function(){
        
    });
    DateTime.prototype={
        DateFormat:function(date,format){
                  var v = ""; 
                  if (typeof date == "string" || typeof date != "object") { 
                    return; 
                  } 
                  var year  = date.getFullYear(); 
                  var month  = date.getMonth()+1; 
                  var day   = date.getDate(); 
                  var hour  = date.getHours(); 
                  var minute = date.getMinutes(); 
                  var second = date.getSeconds(); 
                  var weekDay = date.getDay(); 
                  var ms   = date.getMilliseconds(); 
                  var weekDayString = ""; 
                    
                  if (weekDay == 1) { 
                    weekDayString = "星期一"; 
                  } else if (weekDay == 2) { 
                    weekDayString = "星期二"; 
                  } else if (weekDay == 3) { 
                    weekDayString = "星期三"; 
                  } else if (weekDay == 4) { 
                    weekDayString = "星期四"; 
                  } else if (weekDay == 5) { 
                    weekDayString = "星期五"; 
                  } else if (weekDay == 6) { 
                    weekDayString = "星期六"; 
                  } else if (weekDay == 7) { 
                    weekDayString = "星期日"; 
                  } 
                  v = format; 
                  //Year 
                  v = v.replace(/yyyy/g, year); 
                  v = v.replace(/YYYY/g, year); 
                  v = v.replace(/yy/g, (year+"").substring(2,4)); 
                  v = v.replace(/YY/g, (year+"").substring(2,4)); 
              
                  //Month 
                  var monthStr = ("0"+month); 
                  v = v.replace(/MM/g, monthStr.substring(monthStr.length-2)); 
              
                  //Day 
                  var dayStr = ("0"+day); 
                  v = v.replace(/dd/g, dayStr.substring(dayStr.length-2)); 
              
                  //hour 
                  var hourStr = ("0"+hour); 
                  v = v.replace(/HH/g, hourStr.substring(hourStr.length-2)); 
                  v = v.replace(/hh/g, hourStr.substring(hourStr.length-2)); 
              
                  //minute 
                  var minuteStr = ("0"+minute); 
                  v = v.replace(/mm/g, minuteStr.substring(minuteStr.length-2)); 
              
                  //Millisecond 
                  v = v.replace(/sss/g, ms); 
                  v = v.replace(/SSS/g, ms); 
                    
                  //second 
                  var secondStr = ("0"+second); 
                  v = v.replace(/ss/g, secondStr.substring(secondStr.length-2)); 
                  v = v.replace(/SS/g, secondStr.substring(secondStr.length-2)); 
                    
                  //weekDay 
                  v = v.replace(/E/g, weekDayString); 
                  return v; 
        },
        //获取当前的日期时间 格式“yyyy-MM-dd HH:MM:SS”
        Now:function(){
            try{
                var date = new Date();
                var seperator1 = "-";
                var seperator2 = ":";
                var month = date.getMonth() + 1;
                var strDate = date.getDate();
                if (month >= 1 && month <= 9) {
                    month = "0" + month;
                }
                if (strDate >= 0 && strDate <= 9) {
                    strDate = "0" + strDate;
                }
                var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
                        + " " + date.getHours() + seperator2 + date.getMinutes()
                        + seperator2 + date.getSeconds();
                return currentdate;
            }catch(e){
                console.log(e.message);
            }
            
        },
        //日期比较 相等为 0 ,大于 为1 ,小于为-1。
        CompareDate:function(date1,date2){
            try{
                if((new Date(date1.replace(/-/g,"/")))==(new Date(date2.replace(/-/g,"/"))))
                {
                    return 0;
                }
                else if((new Date(date1.replace(/-/g,"/")))>(new Date(date2.replace(/-/g,"/"))))
                {
                    return 1;
                }
                else{
                     return -1;
                }
            }catch(e){
                console.log(e.message);
            }
            
        },
        //日期之间的时间差
        GetDateDiff:function(startTime,endTime,diffType){
            //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式 
               startTime = startTime.replace(/-/g, "/");
            endTime = endTime.replace(/-/g, "/");
            //将计算间隔类性字符转换为小写
            diffType = diffType.toLowerCase();
            var sTime =new Date(startTime); //开始时间
            var eTime =new Date(endTime); //结束时间
            //作为除数的数字
            var timeType =1;
            switch (diffType) {
                case"second":
                    timeType =1000;
                break;
                case"minute":
                    timeType =1000*60;
                break;
                case"hour":
                    timeType =1000*3600;
                break;
                case"day":
                    timeType =1000*3600*24;
                break;
            }
            return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(timeType));
        }
    };
  • 相关阅读:
    AT&T不能访问公司网络
    尝鲜:windows 7 来了
    .net控件编程 资料篇
    Annual part 2009
    从Visual studio 2005移出Visual Assist
    不能在IIS 5.1增加应用程序扩展的BUG
    The problem of the user is not associated with a trusted sql server connection 混合登录选项设置的问题
    让我们难忘的那些歌曲
    分享利用VPC防止病毒软件的进入你的windows电脑
    杂读 May 12,2008
  • 原文地址:https://www.cnblogs.com/yuming1983/p/7472959.html
Copyright © 2011-2022 走看看