(function ($) {
function guid(g) {
var arr = new Array(); //存放32位数值的数组
if (typeof (g) == "string") { //如果构造函数的参数为字符串
initializeByString(arr, g);
} else {
initializeByOther(arr);
}
//返回一个值,该值指示 Guid 的两个实例是否表示同一个值。
this.equals = function (o) {
if (o && o.isGuid()) {
return this.toString() == o.toString();
}
else {
return false;
}
}
//Guid对象的标记
this.isGuid = function () {
return /^[0-9a-fA-F]{32}?$|^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}?$/.test(this);
}
//返回 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 initializeByString(arr, g) {
g = g.replace(/\{|\(|\)|\}|-/g, "");
g = g.toLowerCase();
if (g.length != 32 || g.search(/[^0-9,a-f]/i) != -1) {
initializeByOther(arr);
} else {
for (var i = 0; i < g.length; i++) {
arr.push(g[i]);
}
}
}
//由其他类型加载
function initializeByOther(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();
}
}
}
$.extend({ guidEx: guid });
$.extend($.guidEx, {
enpty: function () {
return new guid();
},
newGuid: function () {
var g = "";
var i = 32;
while (i--) {
g += Math.floor(Math.random() * 16.0).toString(16);
}
return new guid(g);
},
isGuid: function (g) {
return /^[0-9a-fA-F]{32}?$|^[0-9a-fA-F]{8}(-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}?$/.test(g);
}
});
})(jQuery);

最新文章

  1. 【转】8G内存下MySQL的优化详细方案
  2. 统计学习方法笔记(KNN)
  3. .Net额外小工具
  4. TortoiseSVN期望文件系统格式在“1”到“6”之间;发现格式“7”
  5. Android(java)学习笔记107-0:通过反射获得构造方法并且使用
  6. c#委托概念
  7. 关于 centos 7系统,iptables透明网桥实现【转载请注明】
  8. 学习OpenResty的正确姿势
  9. qt+vs2017环境下XIMEA相机库的配置
  10. TestNG 单元测试框架的使用
  11. Thymeleaf3语法详解
  12. 【翻译】asp.net core2.1认证和授权解密
  13. 剑指Offer(9)
  14. iOS UIAlertController在iPhone与iPad上的区别
  15. Log4j使用笔记
  16. elasticsearch5.0集群大数据量迁移方法及注意事项
  17. 自定义指令 格式化input数据为非负整数
  18. java获取上周任意一天的日期
  19. ELK之logstash6.5
  20. ubuntu搭建discuz论坛

热门文章

  1. 15-js提交表单的简单检测实例
  2. Byte字节与位
  3. js父子窗口传值以及当前页面在js前台如何获得url参数
  4. connect strings sql server
  5. OC和C++混编
  6. tomcat中如何配置虚拟路径
  7. 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
  8. java.lang.ExceptionInInitializerError Caused by: org.hibernate.InvalidMappingException: Unable to read XML
  9. UVaLive 6525 Attacking rooks (二分图最大匹配)
  10. arcgis api for flex 开发入门(一)环境搭建