【发布时间】:2010-11-01 21:01:42
【问题描述】:
我发现snippet 的代码生成一串随机字符。
但是有没有更优雅/更快/更可靠的方法来做到这一点?这似乎依赖于数字 26-91 是给定当前编码的有效字符这一事实。
/// <summary>
/// Generates a random string with the given length
/// </summary>
/// <param name="size">Size of the string</param>
/// <param name="lowerCase">If true, generate lowercase string</param>
/// <returns>Random string</returns>
private string RandomString(int size, bool lowerCase)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch;
for(int i = 0; i < size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
if(lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
【问题讨论】:
-
它不依赖于当前编码 - Convert.ToChar 总是 使用 Unicode,不管系统默认编码如何。不过,它在许多其他方面都很丑:)