永不言弃,简单就好
每一个付出,都有回报,永远不放弃
随笔- 110  文章- 0  评论- 29 
博客园  首页  新随笔  联系  管理  订阅 订阅
在C#中生成指定长度的随机字符

///<summary>
///得到随机字符.
///</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;
}

绿色通道:好文要顶关注我收藏该文与我联系
posted on 2008-12-19 09:23 嘎子 阅读(465) 评论(0) 编辑 收藏
注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页。
首页博问闪存新闻园子招聘知识库
最新IT新闻:
· 《福布斯》:谷歌进军硬件产品 难撼动苹果地位
· 美国空军拟最多购买1.8万台iPad 2
· 分析称专利之争让谷歌苹果两败俱伤
· Android平台发现新型手机病毒Rootsmart
· HTC首款Android4.0手机大曝光
» 更多新闻...
最新知识库文章:
· 高级编程语言的发展历程
· 如何学习一门新的编程语言?
· 学习不同编程语言的重要性
· 为什么我喜欢富于表达性的编程语言
· 计算机专业的女生为什么要学编程
» 更多知识库文章...

China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
<2008年12月>
日一二三四五六
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
昵称:嘎子
园龄:3年3个月
粉丝:0
关注:0

搜索

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论
  • 我的标签

随笔分类

  • .NET学习笔记(4)
  • .NET源码(8)
  • UNIX、LINUX资料(28)
  • 其它(32)
  • 数据库(41)

随笔档案

  • 2011年11月 (1)
  • 2011年10月 (1)
  • 2011年9月 (2)
  • 2011年8月 (2)
  • 2011年7月 (1)
  • 2011年6月 (1)
  • 2011年5月 (2)
  • 2011年4月 (1)
  • 2011年1月 (1)
  • 2010年10月 (4)
  • 2010年9月 (2)
  • 2010年8月 (1)
  • 2010年7月 (1)
  • 2010年6月 (1)
  • 2010年5月 (4)
  • 2010年3月 (5)
  • 2010年2月 (5)
  • 2010年1月 (2)
  • 2009年12月 (4)
  • 2009年11月 (1)
  • 2009年10月 (6)
  • 2009年9月 (11)
  • 2009年8月 (2)
  • 2009年7月 (17)
  • 2009年6月 (2)
  • 2009年5月 (3)
  • 2009年4月 (4)
  • 2009年3月 (4)
  • 2009年2月 (2)
  • 2009年1月 (2)
  • 2008年12月 (7)
  • 2008年11月 (11)

好友Blog

  • eygle
  • 疯子
  • 浪曦视频在线

最新评论

阅读排行榜

评论排行榜

推荐排行榜

Copyright ©2012 嘎子