zoukankan      html  css  js  c++  java
  • [源码]RandomId 生成随机字符串

    /*
     * 名称:RandomId
     * 功能:生成随机ID
     * 作者:冰麟轻武
     * 日期:2012年1月31日 03:36:28
     * 版本:1.0
     * 最后更新:2012年1月31日 03:36:28
     */
    
    using System;
    using System.Text;
    
    namespace blqw
    {
        public sealed class RandomId : IFormattable
        {
            
            /// <summary> 1234567890qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM
            /// </summary>
            public const string ALLWORDS = "1234567890qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM";
            /// <summary> 2345678wertyuiopasdfghjkzxcvbnm23456780QWERTYUPASDFGHJKLZXCVBNM
            /// </summary>
            public const string SIMPLEWORDS = "2345678wertyuipasdfghjkzxcvbnm2345678WERTYUPASDFGHJKLZXCVBNM";
            
            #region 私有对象
            const string ONE = "{0}";
            static RandomId _Rid = new RandomId(0);
            readonly static Random _Rand = new Random();
            static string ToFormat(int length)
            {
                StringBuilder sb = new StringBuilder(length * 3);
                for (int i = 0; i < length; i++)
                {
                    sb.Append(ONE);
                }
                return sb.ToString();
            }
    
            readonly string _Dict;
            readonly int _RMax;
            readonly string _Format; 
            #endregion
    
            /// <summary> 构造函数
            /// </summary>
            /// <param name="length">生成Id长度</param>
            /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param>
            public RandomId(int length, string dict = ALLWORDS)
                : this(RandomId.ToFormat(length), dict)
            { }
            /// <summary> 构造函数
            /// </summary>
            /// <param name="format">生成Id格式</param>
            /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param>
            public RandomId(string format, string dict = ALLWORDS)
            {
                _Dict = dict;
                _Format = format;
                _RMax = dict.Length;
            }
    
            /// <summary> 生成Id
            /// </summary>
            public string Create()
            {
                return string.Format(_Format, this);
            }
            /// <summary> 生成Id
            /// </summary>
            /// <param name="length">生成Id长度</param>
            /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param>
            public static string Create(int length, string dict = ALLWORDS)
            {
                return new RandomId(length, dict).Create();
            }
            /// <summary> 生成Id
            /// </summary>
            /// <param name="format">生成Id格式</param>
            /// <param name="dict">随机字符字典,默认字典为0-9a-zA-Z</param>
            public static string Create(string format, string dict = ALLWORDS)
            {
                return new RandomId(format, dict).Create();
            }
    
            #region IFormattable 成员
    
            string IFormattable.ToString(string format, IFormatProvider formatProvider)
            {
                return _Dict[_Rand.Next(0, _RMax)].ToString();
            }
    
            #endregion
    
            
        }
    }
    View Code
    Console.WriteLine(RandomId.Create(4));//使用默认字典生成4位随机字符串,默认字典中不包含l,1,O,0,q,9等容易混淆字符
    Console.WriteLine(RandomId.Create(4, RandomId.ALLWORDS));//使用完整字典(0-9a-zA-Z),生成4位随机字符
    Console.WriteLine(RandomId.Create(10, "多少级开发和贷款撒了花费大量时间好快理发店撒娇哦就开放了的撒酒阿克里福德就是卡看了就分开的世界里分开家里的事"));//使用指定中文字典,生成4位随机字符
    Console.WriteLine(RandomId.Create("SN:{0}{0}{0}{0}-{0}{0}{0}-{0}{0}{0}.{0}{0}", "123456abcdef"));//使用指定字典生成特定格式的随机字符

    结果:

    C9RX
    6bd2
    级分的卡就和多发世克
    SN:6eb2-d2c-6af.d4
    请按任意键继续. . .

     没太多技术含量,就是封装了个类,方便调用

    我写的文章,除了纯代码,其他的都是想表达一种思想,一种解决方案.希望各位看官不要局限于文章中的现成的代码,要多关注整个文章的主题思路,谢谢!
    我发布的代码,没有任何版权,遵守WTFPL协议(如有引用,请遵守被引用代码的协议)
    qq群:5946699 希望各位喜爱C#的朋友可以在这里交流学习,分享编程的心得和快乐
  • 相关阅读:
    鬼斧神工---计算机的开机启动过程
    微服务之日志落盘设计
    微服务架构设计
    一条SQL语句执行得很慢的原因有哪些?
    996:只要能活着就好,不管活得多么糟糕
    事务隔离性与隔离级别
    数据库悲观锁与乐观锁
    解决百度网盘(百度云)分享链接不存在失效、分享的文件已经被取消的问题
    宁撞金钟一下,不打破鼓三千,IT人要有志气,要进就进大的好的公司
    1430:家庭作业
  • 原文地址:https://www.cnblogs.com/blqw/p/RandomId.html
Copyright © 2011-2022 走看看