生成指定长度随机字符串函数
来源:互联网 发布:软件架构有哪几种 编辑:程序博客网 时间:2024/09/21 09:20
从给出的备选字符或者字符区间中随机抽取字符组成所需要的字符串
内容:
1、 对于备选字符的问题,给出两种解决方案:
² 列出所有符合要求的字符组成字符串传入(Code1)
优点:可任意列出需要的字符,简洁明了
缺点:备选字符较多时一一罗列比较麻烦
² 给出一个字符区间(Code2)
优点:不需要一一罗列所有所需要的字符,方便快捷
缺点:不能满足对一些特殊字符的取舍,如需要选取的字符不属于一个区间内的情况
² 一个标准的字符文件(Code3)
优点:适合有大批量备选字符及多种特殊字符(各种不常见的字符、各种国家文字)
缺点:一般没有这种需求
2、 当抽取备选字符时,有以下两种操作方式:
² 通过Substring方法从给定的字符串中抽取字符,用StringBuilder拼出字符串返回(Code1)
² 通过Substring方法从给定的字符串中抽取字符,用+=拼出字符串返回
² 从数组中抽取字符,采用Char[]数组存储(Code4)
通过测试发现,在循环10000次以下时这三种方式的执行时间都可以忽略不计,当需要的字符长度达到100000时,用+拼接字符串的效率是很低的。以下是测试结果:(单位:秒)
codeCount
byte[]
+=
StringBuilder
10000
0.015625
0.28125
0.015625
100000
0.03125
36.921875
0.078125
1000000
0.171875
——
0.609375
10000000
1.671875
—
5.953125
Code1:
/// <summary>
/// 随机生成字符串
/// </summary>
/// <param name="codeCount">字符串个数</param>
/// <param name="baseString">备选字符组成的字符串</param>
/// <returns>随机生成的字符串</returns>
private string GenerateCodeFromString(int codeCount,string baseString)
{
int number;
int length = baseString.Length;
StringBuilder result = new StringBuilder();
System.Random random = new Random();
for(int i=0; i<codeCount; i++)
{
number = random.Next(length);
result.Append(baseString.Substring(number,1));
}
return result.ToString();
}
Code2:
/// <summary>
/// 随机生成字符串
/// </summary>
/// <param name="codeCount">字符串个数</param>
/// <param name="startCode">起始备选字符</param>
/// <param name="endCode">结束备选字符</param>
/// <returns>随机生成的字符串</returns>
private string GenerateCodeFromRange(int codeCount,char startCode,char endCode)
{
int number;
StringBuilder result = new StringBuilder(codeCount);
int length = endCode - startCode + 1;
char code = 'a';
System.Random random = new Random();
for(int i=0; i<codeCount; i++)
{
number = random.Next(length);
code = (char)(startCode + (char)(number));
result.Append(code.ToString());
}
return result.ToString();
}
Code3:
/// <summary>
/// 随机生成字符串
/// </summary>
/// <param name="codeCount">字符串个数</param>
/// <param name="fileName">标准的字符文件路径</param>
/// <returns>随机生成的字符串</returns>
private string GenerateCodeFromFile(int codeCount,string filePath)
{
int number;
StreamReader stream = new StreamReader(filePath,System.Text.Encoding.Default);
string s = stream.ReadToEnd();
int length = s.Length;
StringBuilder result = new StringBuilder(codeCount);
System.Random random = new Random();
for(int i=0; i<codeCount; i++)
{
number = random.Next(length);
result.Append(s.Substring(number,1));
}
return result.ToString();
}
Code4:
/// <summary>
/// 随机生成字符串
/// </summary>
/// <param name="codeCount">字符串个数</param>
/// <param name="chars">备选字符数组</param>
/// <returns>随机生成的字符串</returns>
private string GenerateCodeFromArray(int codeCount,char[] chars)
{
int number;
char[] tempChars = new char[codeCount];
int length = chars.Length;
System.Random random = new Random();
for(int i=0; i<codeCount; i++)
{
number = random.Next(length);
tempChars[i] = chars[number];
}
String result = new String(tempChars);
return result.ToString();
}
总结:
根据本函数的需求,需要随机抽取的字符串长度一般不会很大,所以无论采用哪种方式都可以接受。而根据情况给出多种接口形式供选择。
- 生成指定长度随机字符串函数
- 随机生成指定长度字符串
- mysql 自定义sql函数生成指定长度的随机字符串
- C# 生成指定长度的随机字符串
- 生成指定长度的随机字符串
- java生成指定长度的随机字符串
- 生成指定长度的随机字符串
- 生成指定长度的随机字符串
- java生成指定长度的随机字符串
- 生成指定长度的随机字符串 .
- java生成指定长度的随机字符串
- 自定义随机生成指定的长度字符串
- 随机生成指定长度的字符串+校验
- C语言生成指定长度随机字符串
- 生成一个指定长度的随机字符串
- 从指定字符串中随机生成指定长度子字符串
- MySQL随机生成固定长度字符串函数
- oracle 生成指定长度字符串的函数
- 值得用一生来品味的100句凡人语录
- 一个比较科学的寿命测试
- 怎样将Excel中的数据导入到SQLServer2000数据库中
- GOOGLE带来的可能是一次革命
- 接口关系稳定原理探索
- 生成指定长度随机字符串函数
- 小孩出圈问题
- 将任何图片转换成3D图像
- 反射机制与系统耦合实力详解
- 图片被盗链
- 接口设计定理
- 《大国崛起》之荷兰
- applet 的一个应用实现类似迅雷流媒体感知的功能
- asp下载防盗链代码