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