zoukankan      html  css  js  c++  java
  • Guid.NewGuid().ToString()生成唯一码js

    Guid.NewGuid().ToString() 生成唯一码,用户生成随机id

    生成唯一编码,版本控制对比等。

    //表示全局唯一标识符 (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);
    }
  • 相关阅读:
    3. 技术专题
    3. 技术专题
    1. 个人经验总结
    2. 阿里巴巴Java开发手册主题
    自动化构建工具演化、对比、总结
    2. 阿里巴巴Java开发手册主题
    (转)高并发高流量的大型网站架构设计(二)
    (转)高并发高流量的大型网站架构设计(一)
    (转)可伸缩性最佳实践:来自eBay的经验
    (转)Application, Session, Cookie, Viewstate, Cache对象用法和区别
  • 原文地址:https://www.cnblogs.com/reweb/p/4586357.html
Copyright © 2011-2022 走看看