博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Js 生成Guid
阅读量:5067 次
发布时间:2019-06-12

本文共 3221 字,大约阅读时间需要 10 分钟。

使用方法:

1、  生成一个新GUID:var guid = Guid.NewGuid();

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

a)         var guid = new Guid();

b)         var guid = Guid.Empty;

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

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

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);}

 

转载于:https://www.cnblogs.com/aixinjueluogu/archive/2012/09/20/2694648.html

你可能感兴趣的文章
查找、移除某个视图上的某类控件
查看>>
python学习day06--01
查看>>
rest-framework:频率控制
查看>>
MapReduce程序的优化
查看>>
自动化测试框架实践2--STAF
查看>>
MapReduce入门
查看>>
使用 ArcGIS Desktop 切瓦片
查看>>
golang导入包的几个说明:import
查看>>
window bat
查看>>
lucene
查看>>
关于python安装lxml插件的问题
查看>>
How can I generate database tables from C# classes?
查看>>
新手小白Linux(Centos6.5)部署java web项目(mongodb4.0.2安装及相关操作)
查看>>
【weex开发】环境配置流程
查看>>
OpenStack三种类型的NAT转换
查看>>
ISLR 4.6 Lab: Logistic Regression, LDA, QDA, and KNN
查看>>
解决Navicat 出错:1130-host . is not allowed to connect to this MySql server,MySQL
查看>>
virsh command
查看>>
UWP 中的 LaunchUriAsync,使用默认浏览器或其他应用打开链接
查看>>
盒子模型,top和margin-top
查看>>