var Utils = function(){};

Utils.text = { 

  stripTags: function (val) {
    return val.replace(/<\/?[^>]+>/gi, "");   //正则表达式中的<\/?其实就是匹配</或<,后面的[^>]+其实就是匹配不是>的任何一个或多个字符,因此此正则可以匹配<div>,</div>,<input type="text" />,很明显,此方法是去掉标签的工具方法。
  },  

  decodeHTML: function (val) {     //html解码
    var s = val;
    s = s.replace(/&lt;/gi, "<");
    s = s.replace(/&gt;/gi, ">");
    s = s.replace(/&quot;/gi, "\"");   //这里的"\""可以改成'"'
    s = s.replace(/&nbsp;/gi, " ");
    s = s.replace(/'/gi, "'");
    s = s.replace(/&amp;/gi, "&");
    return s;
  }, 

  encodeHTML: function (val) {
    var s = val;
    s = s.replace(/&/g, "&amp;");
    s = s.replace(/</g, "&lt;");
    s = s.replace(/>/g, "&gt;");
    s = s.replace(/\"/g, "&quot;");   
    s = s.replace(/ /g, "&nbsp;");
    s = s.replace(/\'/g, "'");
    return s;
  },

  trim: function (val) {
    return val.replace(/(^\s*)|(\s*$)/g, "");
  },

  len: function (val) {   //返回字符串的字节数,中文2个字节,其它1个字节
    var len = 0;
    for (var i = 0, l = val.length; i < l; i++) {
      if (val.charCodeAt(i) > 255) {
        len += 2;
      } else {
        len++;
      }
    }
    return len;
  },

  lefts: function (val,len, isAddDot) {    //从字符串左边开始截取指定的字符数
    var str = val;
    if (val.length > len) {
      str = val.substring(0, len);
      if (isAddDot) {
        str += "...";
      }
    }
    return str;
  }, 

  isNumber: function (val) {   //判断字符串是否为纯数字
    return (val.search(/^\d+$/g) == 0);
  }, 

  inStr: function (val,str, isCase) {   //字符串val是否存在于另外一个字符串str中,isCase是否区分大小写
    var v = val;
    var m = (isCase) ? "" : "i";    //默认情况下,是不区分大小写的
    var reg = new RegExp("\\b" + v + "\\b", m);  //   \b的意思是匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
    return reg.test(str);
  },

  format: function (str) {  //格式化这种结构的字符串:"{0} not quals {1}"。举个例子:Util.format("{0} not equals {1}", 5, 6),返回的结果:"5 not equals 6"。
    var args = arguments;  
    var pattern = /{(\d)}/g;   //此正则匹配{0},{1}。
    return String(str).replace(pattern, function (match, subkey) {
      subkey = parseInt(subkey, 10) + 1;      //subkey就是匹配的第一个子表达式,这里就是数字
      var value = args[subkey];
      if(typeof value !== "undefined"){
        return value;
      }else{
        return "";
      }

    });
  }

};

Utils.Number ={ 

  add: function (num, num1) {    //两个浮点数相加
    var m = 0, r1 = 0, r2 = 0;
    var s1 = num.toString(), s2 = num1.toString();
    try {
      if (s1.indexOf(".") > -1) {
        r1 = s1.split(".")[1].length;     //小数点后面有多少位
      }
    } catch (e) {
      r1 = 0;
    }
    try {
      if (s2.indexOf(".") > -1) {
        r2 = s2.split(".")[1].length;
      }
    } catch (e) {
      r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));    //取两个浮点数,小数点后面位数最长的值,假如是3,那么m = 1000。
    return (num * m + num1 * m) / m;        
  },  

  mul: function (num, num1) {      //两个浮点数相乘
    var m = 0, s1 = num.toString(), s2 = num1.toString();
    try {
      if (s1.indexOf(".") > -1) {
        m += s1.split(".")[1].length;    //把两个浮点数的小数点后面的位数相加
      }
    } catch (e1) {
    }
    try {
      if (s2.indexOf(".") > -1) {
        m += s2.split(".")[1].length;
      }
    } catch (e2) {
    }
    return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
  }, 

  div: function (num, num1) {   //两个浮点数相除,num/num1
    var t1 = 0, t2 = 0, r1, r2, s1 = num.toString(), s2 = num1.toString();
    try {
      if (s1.indexOf(".") > -1) {
        t1 = s1.split(".")[1].length;
      }
    }
    catch (e1) {
    }
    try {
      if (s2.indexOf(".") > -1) {
        t2 = s2.split(".")[1].length;
      }
    }
    catch (e2) {
    }
    r1 = Number(s1.replace(".", ""));
    r2 = Number(s2.replace(".", ""));
    return (r1 / r2) * Math.pow(10, t2 - t1);
  }

};  

Utils.Date = {

  dateDiff: function(dt1, dt2 ,interval){    //  两个日期相差多长时间,interval代表时间差类型:D(天),H(时),M(分),S(秒),T(毫秒)

    var objInterval = {'D':1000 * 60 * 60 * 24 , 'H':1000 * 60 * 60 , 'M':1000 * 60 , 'S':1000 , 'T':1};
    interval = interval.toUpperCase();
    try{
      return Math.round( (dt2.getTime() - dt1.getTime()) / objInterval[interval] );
    }
    catch (e)
    {
      return e.message;
    }
  }

};

Utils.Url={ 

  query: function (key, url) {   //获取url的指定查询参数
    url = url || location.href;
    var reg = new RegExp('[?&]' + key + '=([^&#]*)');    //获取url上面指定的key值
    var match = url.match(reg);
    if (match) {
      try {
        return decodeURIComponent(match[1]);     //取到的值需要解码
      } catch (e) {
      }
    }
    return "";
  }, 

  getUrlQueryParams:function(url){   //获取url的所有查询参数
    var params = {};
    url = url || location.href;
    var regex = /[?&]([\w]+)=([^&#]*)/g;    //第一个子表达式匹配key,第二个子表达式匹配value
    while( ( results = regex.exec( url ) ) != null ){
      params[decodeURIComponent(results[1])]=decodeURIComponent(results[2]);
    }
    return params;
  }, 

  addParameter: function ( url , key, value) {   //给url添加查询字符串

    url = url || location.href;

    if(url.indexOf("#") != -1) {url = url.split("#")[0];var hash = url.split("#")[1];}
    if (url.indexOf("?") == -1) url += "?";   //如果没有?,就证明原来的url没有查询字符串,因此加上?
    if (url.indexOf(key + "=") == -1) {   //如果url之前没有这个key值,就直接把这个查询字符串添加到url后面
      return url + '&' + key + "=" + encodeURIComponent(value) + (hash ? hash : "");
    } else {    //如果url之前有这个key值,那么就替换掉
      return url.replace(new RegExp("([?&])" + key + "=[^&]*"), "$1" + key + "=" + encodeURIComponent(value)) + (hash ? hash : "");
    }
  }

};

Utils.cookie = {

  get: function (key) {    //获取cookie中的name值
    var cookie = document.cookie,cookieName = encodeURIComponent(key) + '=',   //首先先获得cookie值
    start = cookie.indexOf(cookieName),    //再看cookie中是否有key值
    value = null;
    if (start > -1) {
      var cookieEnd = document.cookie.indexOf(';', start);;    //cookie中的值都是以";"隔开的,因此取到此值的结束点
      if (cookieEnd == -1) {       //如果此key值在cookie的最后面,就不会有";"。
        cookieEnd = document.cookie.length;
      }
      value = decodeURIComponent(document.cookie.substring(start + cookieName.length, cookieEnd));
    }
    return value;
  },

  set: function (name, value, expires, path, domain, secure) {    //设置cookie的值
    var text = encodeURIComponent(name) + '=' + encodeURIComponent(value);
    if (expires instanceof Date) {
      text += ';expires=' + expires.toGMTString();
    }
    if (path) {
      text += ';path=' + path;
    }
    if (domain) {
      text += ';domain=' + domain;
    }
    if (secure) {
      text += ';secure';
    }
    document.cookie = text;
  },

  unset: function (name, path, domain, secure) {    //删除cookie,其实就是设置它超时
    this.set(name, "", new Date(0), path, domain, secure);
  }

};

Utils.event ={

  preventDefault: function (event) {
    if (event.preventDefault) {
      event.preventDefault();
    }
    else {
      event.returnValue = false;
    }
  },

  stopPropagation: function (event) {
    if (event.stopPropagation) {
      event.stopPropagation();
    }
    else {
      event.cancelBubble = true;
    }
  },

  getEvent: function (event) {
    var e = event || window.event;
    if (e.srcElement) e.target = e.srcElement;
    return e;
  }

};

加油!

Utils工具方法集插件详解的更多相关文章

  1. Maven系列第6篇:生命周期和插件详解,此篇看过之后在maven的理解上可以超越同级别90%的人!

    maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第6篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...

  2. ThreeJS系列1_CinematicCameraJS插件详解

    ThreeJS系列1_CinematicCameraJS插件详解 接着上篇 ThreeJS系列1_CinematicCameraJS插件介绍 看属性的来龙去脉 看方法作用 通过调整属性查看效果 总结 ...

  3. Uploadify 上传文件插件详解

    Uploadify 上传文件插件详解 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中 ...

  4. .NET Excel导出方法及其常见问题详解

    摘要:.NET Excel导出方法及其常见问题详解. 一.Excel导出的实现方法 在.net 程序开发中,对于Excel文件的导出我们一共有三种导出方式: 利用文件输出流进行读写操作 这种方式的导出 ...

  5. cloudemanager安装时出现failed to receive heartbeat from agent问题解决方法(图文详解)

    不多说,直接上干货! 安装cdh5到最后报如下错误: 安装失败,无法接受agent发出的检测信号. 确保主机名称正确 确保端口7182可在cloudera manager server上访问(检查防火 ...

  6. Linux网络状态工具ss命令使用详解【转】

    ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...

  7. Google自写插件详解

    谷歌插件详解,跳转至个人主页查看. GoogleExtension

  8. (转)Linux网络状态工具ss命令使用详解

    Linux网络状态工具ss命令使用详解 原文:http://www.landui.com/help/show-5991.html ss 是 socket statistics 的缩写.顾名思义,ss ...

  9. cloudemanager安装时出现8475 MainThread agent ERROR Heartbeating to 192.168.30.1:7182 failed问题解决方法(图文详解)

    不多说,直接上干货!   问题详情 解决这个问题简单的,是因为有进程占用了.比如 # ps aux | grep super root ? Ss : : /opt/cm-/lib64/cmf/agen ...

随机推荐

  1. Mac 下输入特殊字符

    [Mac 下输入特殊字符] 快捷键是 Control + Commans + Space

  2. Oracle ADF VO排序及VO的查询模式

    常规应用中,当需要使用Table向终端用户展示数据时,Table中数据的显示排序一致性极大程度的影响到了客户体验.通常希望诸如多次查询结果显示顺序相同.插入数据在原数据上方等的实现. ADF为开发人员 ...

  3. [Selenium]计算坐标进行拖拽,重写dragAndDropOffset

    //@author jzhang6 public void dragAndDropOffset(WebDriver driver,WebElement dragableEl, WebElement d ...

  4. c# windows服务的制作

    一.创建一个Windows Service )创建Windows Service项目 )对Service重命名 将Service1重命名为你服务名称,这里我们命名为Servicetest. 二.创建服 ...

  5. docker跨主机互联

    以下内容只是命令,原理自行百度,google或者官方查阅! 方案一.overlay Consul 三台主机为例(都要安装docker): 192.168.20.20(consul服务) 192.168 ...

  6. div模拟键盘输入

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  7. Hdu1560 DNA sequence(IDA*) 2017-01-20 18:53 50人阅读 评论(0) 收藏

    DNA sequence Time Limit : 15000/5000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  8. 面试经验之——HE集团,YZ科技

    上周去了HE集团面试,该集团是做车辆辅助驾驶系统的,最终目标瞄准的是自动驾驶,加上再之前在YZ科技的面试经验,有些关于车辆驾驶上的心得想聊聊. 首先说说两个企业的面试情况吧.YZ科技中的两个技术聊天都 ...

  9. Java垃圾收集调优实战

    1 资料 JDK5.0垃圾收集优化之--Don't Pause(花钱的年华)  编写对GC友好,又不泄漏的代码(花钱的年华)  JVM调优总结  JDK 6所有选项及默认值  2 GC日志打印 GC调 ...

  10. 凭借对KMP算法的了解,用java实现了一下,结果和java自带的字符串indexOf比,性能差了十倍。。。

    public class KMP { private char[] source = {'a','b','c','b','c','a','b','a','b','d','d','e','f','g', ...