[源码]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();
readonly static Random _Rand = new Random();
static string ToFormat(int length)
{
StringBuilder sb = new StringBuilder(length * );
for (int i = ; 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(, _RMax)].ToString();
} #endregion }
}
Console.WriteLine(RandomId.Create());//使用默认字典生成4位随机字符串,默认字典中不包含l,1,O,0,q,9等容易混淆字符
Console.WriteLine(RandomId.Create(, RandomId.ALLWORDS));//使用完整字典(0-9a-zA-Z),生成4位随机字符
Console.WriteLine(RandomId.Create(, "多少级开发和贷款撒了花费大量时间好快理发店撒娇哦就开放了的撒酒阿克里福德就是卡看了就分开的世界里分开家里的事"));//使用指定中文字典,生成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
请按任意键继续. . .
没太多技术含量,就是封装了个类,方便调用
[源码]RandomId 生成随机字符串的更多相关文章
- 用VC编译lua源码,生成lua语言的解释器和编译器
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...
- .net生成随机字符串
生成随机字符串的工具类: /// <summary> /// 随机字符串工具类 /// </summary> public class RandomTools { /// &l ...
- PHP 生成随机字符串与唯一字符串
说明:生成随机字符串用到的方法有 mt_rand() 生成唯一字符串用到的方法有 md5(),uniqid(),microtime() 代码: <?php /* * 生成随机字符串 * @par ...
- PHP生成随机字符串包括大小写字母
PHP生成随机字符串包括大小写字母,这里介绍两种方法: 第一种:利用字符串函数操作 <?php /** *@blog <www.phpddt.com> */ function cre ...
- 生成随机字符串(UUID方法)
这是另一种用UUID生成随机字符串的方法. public class RandomGenerator{ private int length; public void setLength(int le ...
- SQL生成随机字符串
1.SQLserve生成随机字符串 SELECT replace(newid(), '-', '')
- php生成随机字符串可指定纯数字、纯字母或者混合的
php 生成随机字符串 可以指定是纯数字 还是纯字母 或者混合的. 可以指定长度的. function rand_zifu($what,$number){ $string=''; for($i = 1 ...
- JS生成随机字符串的多种方法
这篇文章主要介绍了JS生成随机字符串的方法,需要的朋友可以参考下 下面的一段代码,整理电脑时,记录备查. <script language="javascript"> ...
- PHP生成随机字符串与唯一字符串
代码如下: <?php /* * 生成随机字符串 * @param int $length 生成随机字符串的长度 * @param string $char 组成随机字符串的字符串 * @ret ...
随机推荐
- 移动端HTML5<video>视频播放优化实践[转]
http://blog.csdn.net/u010918416/article/details/52705732 http://www.xuanfengge.com/html5-video-play. ...
- ubuntu linux mysql 安装 基本操作 命令
mysql --help #如果有信息证明系统已经安装了mysql mysql -V #查看版本号 netstat -tap|grep mysql #检查mysql是否在启动状态 卸载mysql: s ...
- 使用C#代码部署SharePoint 2013开发包简单总结(一)
这篇文章将总结下如何将自己开发的列表.Web部件.事件接收器等元素部署到SharePoint的服务器.因水平有限,我的做法未必是最佳实践,会有些错误理解和疏漏,欢迎各位高手批评指正——但一定要能给出更 ...
- Json数据中的特殊字符处理
今天在项目中遇到一个问题,页面上的数据突然显示不出来了,查验后得知是Json数据出现了问题.使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错.如果内容中 ...
- 前台js与后台方法互调
一:后台调用前台js的方法 ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", " ...
- 【转】测试LibreOffice SDK 开发环境配置(Windows)
原文:http://www.aqcoder.com/blog/detail/id/7441186b-93fd-482c-b4d7-0facd1ee498d 下载与安装 LibreOffice 主页:h ...
- Android volley 当用fiddler2 抓包时隔一段时间不操作,会出现 http 408错误
出现原因是由于fiddler2导致,关闭fiddler2即可...
- 尝试u3d中将代码与编辑器分离
最近与朋友交流,他一直是做端游,最近接触了u3d以后无法忍受代码与配置文件,美术资源全部纠缠在一起的状况,于是一直在琢磨怎么将编辑器与代码彻底分离. 自己也抽空研究一下,碰到一些问题先记录下来. 首先 ...
- Tomcat实现分析(一)--类加载及容器组件
启动脚本 启动命令中的参数如下: org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/opt/ap ...
- 详细!交叉编译时 note: the mangling of 'va_list' has changed in GCC 4.4解决办法
为什么要在标题前面加了详细两个字,就是为了吸引看文章的你还有写文章的我这种小白,我是从坑里面爬出来了. 废话少说.... 问题就是这样子了,至于解决办法,在网上搜索了很久,大多数以一段英文作为解决办法 ...