zoukankan      html  css  js  c++  java
  • JQuery 的一个轻量级 Guid 字符串拓展插件.

     1 (function ($) {
     2     function guid(g) {
     3         var arr = new Array(); //存放32位数值的数组
     4         if (typeof (g) == "string") { //如果构造函数的参数为字符串
     5             initializeByString(arr, g);
     6         } else {
     7             initializeByOther(arr);
     8         }
     9         //返回一个值,该值指示 Guid 的两个实例是否表示同一个值。
    10         this.equals = function (o) {
    11             if (o && o.isGuid()) {
    12                 return this.toString() == o.toString();
    13             }
    14             else {
    15                 return false;
    16             }
    17         }
    18         //Guid对象的标记
    19         this.isGuid = function () {
    20             return /^[0-9a-fA-F]{32}?$|^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}?$/.test(this);
    21         }
    22         //返回 Guid 类的此实例值的 String 表示形式。
    23         this.toString = function (format) {
    24             if (typeof (format) == "string") {
    25                 if (format == "N" || format == "D" || format == "B" || format == "P") {
    26                     return toStringWithFormat(arr, format);
    27                 } else {
    28                     return toStringWithFormat(arr, "D");
    29                 }
    30             }
    31             else {
    32                 return toStringWithFormat(arr, "D");
    33             }
    34         }
    35         //由字符串加载
    36         function initializeByString(arr, g) {
    37             g = g.replace(/{|(|)|}|-/g, "");
    38             g = g.toLowerCase();
    39             if (g.length != 32 || g.search(/[^0-9,a-f]/i) != -1) {
    40                 initializeByOther(arr);
    41             } else {
    42                 for (var i = 0; i < g.length; i++) {
    43                     arr.push(g[i]);
    44                 }
    45             }
    46         }
    47         //由其他类型加载
    48         function initializeByOther(arr) {
    49             var i = 32;
    50             while (i--) {
    51                 arr.push("0");
    52             }
    53         }
    54         /*
    55         根据所提供的格式说明符,返回此 Guid 实例值的 String 表示形式。
    56         N  32 位: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    57         D  由连字符分隔的 32 位数字 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    58         B  括在大括号中、由连字符分隔的 32 位数字:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
    59         P  括在圆括号中、由连字符分隔的 32 位数字:(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
    60         */
    61         function toStringWithFormat(arr, format) {
    62             switch (format) {
    63                 case "N":
    64                     return arr.toString().replace(/,/g, "");
    65                 case "D":
    66                     var str = arr.slice(0, 8) + "-" + arr.slice(8, 12) + "-" + arr.slice(12, 16) + "-" + arr.slice(16, 20) + "-" + arr.slice(20, 32);
    67                     str = str.replace(/,/g, "");
    68                     return str;
    69                 case "B":
    70                     var str = toStringWithFormat(arr, "D");
    71                     str = "{" + str + "}";
    72                     return str;
    73                 case "P":
    74                     var str = toStringWithFormat(arr, "D");
    75                     str = "(" + str + ")";
    76                     return str;
    77                 default:
    78                     return new Guid();
    79             }
    80         }
    81     }
    82     $.extend({ guidEx: guid });
    83     $.extend($.guidEx, {
    84         enpty: function () {
    85             return new guid();
    86         },
    87         newGuid: function () {
    88             var g = "";
    89             var i = 32;
    90             while (i--) {
    91                 g += Math.floor(Math.random() * 16.0).toString(16);
    92             }
    93             return new guid(g);
    94         },
    95         isGuid: function (g) {
    96             return /^[0-9a-fA-F]{32}?$|^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}?$/.test(g);
    97         }
    98     });
    99 })(jQuery);
  • 相关阅读:
    日记 2018/1/12
    【程序员笔试面试必会——排序①】Python实现 冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序
    Python笔试、面试 【必看】
    高性能Go并发
    Go连接MySql数据库Error 1040: Too many connections错误解决
    MAC 配置文件 ~/.zshrc
    go-statsd项目
    日记 2017.11.20
    sed 命令详解
    Opentsdb简介(一)
  • 原文地址:https://www.cnblogs.com/allyn/p/4811230.html
Copyright © 2011-2022 走看看