[源码]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 ...
随机推荐
- SQL Server 2008通过LinkServer操作ORACLE
时光荏苒~~ 最近项目有需求需要通过SQL Server2008中的数据自动更新到ORACLE中,其实,一开始肯定会想到触发器,因为可以保证实时性. 方案一: 首先,我很确定的一件事情就是MSSQL中 ...
- orale 函数大全[转]
oracle函数大全 http://wenku.baidu.com/link?url=bXaGsnn8iN264GB8ec48IUPg5eRGDKAyAiSw0OBKL1I0mBVG549-2u9HT ...
- <form>属性
当form表单中action没有值时,默认当前页方法.
- Qt 为tableview的item添加网格线
使用qss可以显示每个item的网格: selection-background-color: rgb(170, 170, 127); gridline-color: rgb(255, 255, 25 ...
- Dojo框架学习笔记<二>
一.dojo/dom 该模块定义了Dojo Dom API,主要有以下几种用法: 1.dom.byId();(相当于document.getElementById()) ①最直接的用 ...
- 无法打开注册表项 unknown 没有足够的权限访问
secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose 执行完,重新安装即可.
- pt_table_checksum对检查表的chunk大小的限制
02-16T10:22:38 Skipping table xoxdb.tb_valuelog because on the master it would be checksummed in one ...
- 黑马程序员_Java基础:集合总结
------- android培训.java培训.期待与您交流! ---------- 一.集合概念 相信大家都知道,java是一门面向对象的编程语言,而对事物的体现都是以对象的形式,所以为了方便对多 ...
- oracle exists
公司项目中有用到exists,感觉挺有用的,拷贝一些感念的东西. “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T ...
- 《Linux内核分析》之第四章读书笔记
4.1多任务 多任务操作系统:同时并发地交互执行多个进程的操作系统 多任务操作系统会使多个进程处于堵塞或者睡眠状态.这些任务尽管位于内存,但是并不处于可运行状态.这些进程利用内核堵塞自己,直到某一事件 ...