| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- //表示全局唯一标识符 (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);
- }
- function uuid() {
- var guid = "";
- for (var i = 1; i <= 32; i++) {
- var n = Math.floor(Math.random() * 16.0).toString(16);
- guid += n;
- //if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
- // guid += "-";
- }
- return guid;
- }
|