RandomId生成隨機(jī)字符串詳解實(shí)例
/*
* 名稱:RandomId
* 功能:生成隨機(jī)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> 構(gòu)造函數(shù)
/// </summary>
/// <param name="length">生成Id長度</param>
/// <param name="dict">隨機(jī)字符字典,默認(rèn)字典為0-9a-zA-Z</param>
public RandomId(int length, string dict = ALLWORDS)
: this(RandomId.ToFormat(length), dict)
{ }
/// <summary> 構(gòu)造函數(shù)
/// </summary>
/// <param name="format">生成Id格式</param>
/// <param name="dict">隨機(jī)字符字典,默認(rèn)字典為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">隨機(jī)字符字典,默認(rèn)字典為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">隨機(jī)字符字典,默認(rèn)字典為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
}
}
Console.WriteLine(RandomId.Create(4));//使用默認(rèn)字典生成4位隨機(jī)字符串,默認(rèn)字典中不包含l,1,O,0,q,9等容易混淆字符
Console.WriteLine(RandomId.Create(4, RandomId.ALLWORDS));//使用完整字典(0-9a-zA-Z),生成4位隨機(jī)字符
Console.WriteLine(RandomId.Create(10, "多少級開發(fā)和貸款撒了花費(fèi)大量時(shí)間好快理發(fā)店撒嬌哦就開放了的撒酒阿克里福德就是卡看了就分開的世界里分開家里的事"));//使用指定中文字典,生成4位隨機(jī)字符
Console.WriteLine(RandomId.Create("SN:{0}{0}{0}{0}-{0}{0}{0}-{0}{0}{0}.{0}{0}", "123456abcdef"));//使用指定字典生成特定格式的隨機(jī)字符

相關(guān)文章
Unity3D獲取當(dāng)前鍵盤按鍵及Unity3D鼠標(biāo)、鍵盤的基本操作
這篇文章主要介紹了Unity3D獲取當(dāng)前鍵盤按鍵及Unity3D鼠標(biāo)、鍵盤的基本操作的相關(guān)資料,需要的朋友可以參考下2015-11-11C#中數(shù)組、ArrayList、List、Dictionary的用法與區(qū)別淺析(存取數(shù)據(jù))
在工作中經(jīng)常遇到C#數(shù)組、ArrayList、List、Dictionary存取數(shù)據(jù),但是該選擇哪種類型進(jìn)行存儲(chǔ)數(shù)據(jù)呢?很迷茫,今天小編抽空給大家整理下這方面的內(nèi)容,需要的朋友參考下吧2017-02-02C#實(shí)現(xiàn)Winform中打開網(wǎng)頁頁面的方法
這篇文章主要介紹了C#實(shí)現(xiàn)Winform中打開網(wǎng)頁頁面的方法,涉及WinForm中WebBrowser的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08C#制作多線程處理強(qiáng)化版網(wǎng)絡(luò)爬蟲
這篇文章主要介紹了C#制作多線程處理強(qiáng)化版網(wǎng)絡(luò)爬蟲的相關(guān)代碼,有想學(xué)習(xí)C#多線程編程的小伙伴可以參考下2016-09-09C#實(shí)現(xiàn)手機(jī)拍照并且保存水印照片
這篇文章主要介紹了C#實(shí)現(xiàn)手機(jī)拍照并且保存水印照片的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11