登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

【华软英创工作室】-潇湘客

QQ:1917141 E-Mail:dengzebo@163.com

 
 
 

日志

 
 
关于我

朝起晨风暮斜阳,为谁辛苦为谁忙? 夏雨梧桐秋棋声,待到何时待何人? 风飒飒兮木萧萧,思公子兮徒离忧。 山有木兮木有枝,心悦君兮君不知。

 
 

C#随机字符串生成  

2008-08-11 14:24:09|  分类: 程序源码 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  /// <summary>
        /// Gets the randomizer.
        /// </summary>
        /// <param name="intLength">Length of the int.</param>
        /// <param name="booNumber">if set to <c>true</c> [boo number].</param>
        /// <param name="booSign">if set to <c>true</c> [boo sign].</param>
        /// <param name="booSmallword">if set to <c>true</c> [boo smallword].</param>
        /// <param name="booBigword">if set to <c>true</c> [boo bigword].</param>
        /// <returns></returns>
        public string getRandomizer(int intLength, bool booNumber, bool booSign, bool booSmallword, bool booBigword)
        {
            //定义  
            Random ranA = new Random();
            int intResultRound = 0;
            int intA = 0;
            string strB = "";

            while (intResultRound < intLength)
            {
                //生成随机数A,表示生成类型  
                //1=数字,2=符号,3=小写字母,4=大写字母  

                intA = ranA.Next(1, 5);

                //如果随机数A=1,则运行生成数字  
                //生成随机数A,范围在0-10  
                //把随机数A,转成字符  
                //生成完,位数+1,字符串累加,结束本次循环  

                if (intA == 1 && booNumber)
                {
                    intA = ranA.Next(0, 10);
                    strB = intA.ToString() + strB;
                    intResultRound = intResultRound + 1;
                    continue;
                }

                //如果随机数A=2,则运行生成符号  
                //生成随机数A,表示生成值域  
                //1:33-47值域,2:58-64值域,3:91-96值域,4:123-126值域  

                if (intA == 2 && booSign == true)
                {
                    intA = ranA.Next(1, 5);

                    //如果A=1  
                    //生成随机数A,33-47的Ascii码  
                    //把随机数A,转成字符  
                    //生成完,位数+1,字符串累加,结束本次循环  

                    if (intA == 1)
                    {
                        intA = ranA.Next(33, 48);
                        strB = ((char)intA).ToString() + strB;
                        intResultRound = intResultRound + 1;
                        continue;
                    }

                    //如果A=2  
                    //生成随机数A,58-64的Ascii码  
                    //把随机数A,转成字符  
                    //生成完,位数+1,字符串累加,结束本次循环  

                    if (intA == 2)
                    {
                        intA = ranA.Next(58, 65);
                        strB = ((char)intA).ToString() + strB;
                        intResultRound = intResultRound + 1;
                        continue;
                    }

                    //如果A=3  
                    //生成随机数A,91-96的Ascii码  
                    //把随机数A,转成字符  
                    //生成完,位数+1,字符串累加,结束本次循环  

                    if (intA == 3)
                    {
                        intA = ranA.Next(91, 97);
                        strB = ((char)intA).ToString() + strB;
                        intResultRound = intResultRound + 1;
                        continue;
                    }

                    //如果A=4  
                    //生成随机数A,123-126的Ascii码  
                    //把随机数A,转成字符  
                    //生成完,位数+1,字符串累加,结束本次循环  

                    if (intA == 4)
                    {
                        intA = ranA.Next(123, 127);
                        strB = ((char)intA).ToString() + strB;
                        intResultRound = intResultRound + 1;
                        continue;
                    }

                }

                //如果随机数A=3,则运行生成小写字母  
                //生成随机数A,范围在97-122  
                //把随机数A,转成字符  
                //生成完,位数+1,字符串累加,结束本次循环  

                if (intA == 3 && booSmallword == true)
                {
                    intA = ranA.Next(97, 123);
                    strB = ((char)intA).ToString() + strB;
                    intResultRound = intResultRound + 1;
                    continue;
                }

                //如果随机数A=4,则运行生成大写字母  
                //生成随机数A,范围在65-90  
                //把随机数A,转成字符  
                //生成完,位数+1,字符串累加,结束本次循环  

                if (intA == 4 && booBigword == true)
                {
                    intA = ranA.Next(65, 89);
                    strB = ((char)intA).ToString() + strB;
                    intResultRound = intResultRound + 1;
                    continue;
                }
            }
            return strB;

        }


        //随机字符串生成器的主要功能如下:
        //1、支持自定义字符串长度
        //2、支持自定义是否包含数字
        //3、支持自定义是否包含小写字母
        //4、支持自定义是否包含大写字母
        //5、支持自定义是否包含特殊符号
        //6、支持自定义字符集
        /// <summary>
        /// 生成随机字符串
        /// </summary>
        /// <param name="length">目标字符串的长度</param>
        /// <param name="useNum">是否包含数字,1=包含,默认为包含</param>
        /// <param name="useLow">是否包含小写字母,1=包含,默认为包含</param>
        /// <param name="useUpp">是否包含大写字母,1=包含,默认为包含</param>
        /// <param name="useSpe">是否包含特殊字符,1=包含,默认为不包含</param>
        /// <param name="custom">要包含的自定义字符,直接输入要包含的字符列表</param>
        /// <returns>指定长度的随机字符串</returns>
        public string GetRnd(int length, bool useNum, bool useLow, bool useUpp, bool useSpe, string custom)
        {
            byte[] b = new byte[4];
            new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
            Random r = new Random(BitConverter.ToInt32(b, 0));
            string s = null, str = custom;

            if (useNum == true) { str += "0123456789"; }
            if (useLow == true) { str += "abcdefghijklmnopqrstuvwxyz"; }
            if (useUpp == true) { str += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
            if (useSpe == true) { str += "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; }

            for (int i = 0; i < length; i++)
            {
                s += str.Substring(r.Next(0, str.Length - 1), 1);
            }

            return s;
        }

  评论这张
 
阅读(5835)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018