zoukankan      html  css  js  c++  java
  • 使用js生成GUID

    使用方法:

    1、  生成一个新GUIDvar guid = Guid.NewGuid();

    2、  生成一个所有值均为0GUID

    a)         var guid = new Guid();

    b)         var guid = Guid.Empty;

    3、  比较两个GUID是否相等:g1.Equals(g2);

    4、  获取Guid的字符串形式。其中, formatString类型的可选参数,其含义为:

    a)         “N” xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    b)         “D”  由连字符分隔的 32 位数字 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

    c)         “B”  括在大括号中、由连字符分隔的 32 位数字:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

    d)         “P”  括在圆括号中、由连字符分隔的 32 位数字:(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

     

    代码如下:

    //表示全局唯一标识符 (GUID)

    function Guid(g){

         var arr = new Array(); //存放32位数值的数组

        

         if (typeof(g) == "string"){ //如果构造函数的参数为字符串

             InitByString(arr, g);

         }

         else{

             InitByOther(arr);

         }

         //返回一个值,该值指示 Guid 的两个实例是否表示同一个值。

         this.Equals = function(o){

             if (o && o.IsGuid){

                  return this.ToString() == o.ToString();

             }

             else{

                  return false;

             }

         }

         //Guid对象的标记

         this.IsGuid = function(){}

         //返回 Guid 类的此实例值的 String 表示形式。

         this.ToString = function(format){

             if(typeof(format) == "string"){

                  if (format == "N" || format == "D" || format == "B" || format == "P"){

                       return ToStringWithFormat(arr, format);

                  }

                  else{

                       return ToStringWithFormat(arr, "D");

                  }

             }

             else{

                  return ToStringWithFormat(arr, "D");

             }

         }

         //由字符串加载

         function InitByString(arr, g){

             g = g.replace(/\{|\(|\)|\}|-/g, "");

             g = g.toLowerCase();

             if (g.length != 32 || g.search(/[^0-9,a-f]/i) != -1){

                  InitByOther(arr);

             }

             else{

                  for (var i = 0; i < g.length; i++){

                       arr.push(g[i]);

                  }

             }

         }

         //由其他类型加载

         function InitByOther(arr){

             var i = 32;

             while(i--){

                  arr.push("0");

             }

         }

         /*

         根据所提供的格式说明符,返回此 Guid 实例值的 String 表示形式。

         N  32 位: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

         D  由连字符分隔的 32 位数字 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

         B  括在大括号中、由连字符分隔的 32 位数字:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

         P  括在圆括号中、由连字符分隔的 32 位数字:(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

         */

         function ToStringWithFormat(arr, format){

             switch(format){

                  case "N":

                       return arr.toString().replace(/,/g, "");

                  case "D":

                       var str = arr.slice(0, 8) + "-" + arr.slice(8, 12) + "-" + arr.slice(12, 16) + "-" + arr.slice(16, 20) + "-" + arr.slice(20,32);

                       str = str.replace(/,/g, "");

                       return str;

                  case "B":

                       var str = ToStringWithFormat(arr, "D");

                       str = "{" + str + "}";

                       return str;

                  case "P":

                       var str = ToStringWithFormat(arr, "D");

                       str = "(" + str + ")";

                       return str;

                  default:

                       return new Guid();

             }

         }

    }

    //Guid 类的默认实例,其值保证均为零。

    Guid.Empty = new Guid();

    //初始化 Guid 类的一个新实例。

    Guid.NewGuid = function(){

         var g = "";

         var i = 32;

         while(i--){

             g += Math.floor(Math.random()*16.0).toString(16);

         }

         return new Guid(g);

    }

    http://www.cnblogs.com/sunnycoder/archive/2010/03/08/1681124.html

  • 相关阅读:
    《精通CSS:高级Web标准解决方案》系列(02):可视化格式模型
    《C#入门经典(第5版)》系列(10):定义类成员
    《C#入门经典(第5版)》系列(11):集合、比较和转换
    《锋利的jQuery》系列(01):jQuery选择器
    《C#入门经典(第5版)》系列(09):定义类
    C# 通过搜狐微博api远程更换壁纸
    C# 联网五子棋
    C# 新浪微博群发器
    C# seo测试小工具1:同时更新多网站的博客(csdn,cnblogs,163,sina)
    MS Ajax 客户端编程 学习笔记 (3)
  • 原文地址:https://www.cnblogs.com/blosaa/p/2193907.html
Copyright © 2011-2022 走看看