📅  最后修改于: 2023-12-03 15:29:48.439000             🧑  作者: Mango
在开发过程中,我们有时需要生成随机字符串来实现一些功能。这篇文章将介绍如何在 C# 中生成随机字符串。
public static string GetRandomString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var random = new Random();
var result = new string(
Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)])
.ToArray());
return result;
}
这个方法使用 Random
类实现,可以生成任意长度的随机字符串。在这个方法中,我们定义了包含所有可用字符的字符串 chars
,通过 Random
类生成一个随机数,然后选择一个 chars
字符串的随机索引,以此来构建字符串。
Guid
public static string GetRandomString()
{
var guid = Guid.NewGuid();
return Convert.ToBase64String(guid.ToByteArray())
.Replace("/", "")
.Replace("+", "");
}
另一种生成随机字符串的方式是使用 Guid
类,它可以生成唯一的标识符。通过将 Guid
对象的 ToByteArray
方法返回的 byte
数组转换成 Base64
字符串,然后过滤掉 /
和 +
这两个字符,得到最终的随机字符串。
RandomNumberGenerator
public static string GetRandomString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var rng = new RNGCryptoServiceProvider();
var result = new char[length];
var buffer = new byte[sizeof(uint)];
for (var i = 0; i < length; i++)
{
rng.GetBytes(buffer);
var index = BitConverter.ToUInt32(buffer, 0) % chars.Length;
result[i] = chars[(int)index];
}
return new string(result);
}
最后一个方法使用 RNGCryptoServiceProvider
类实现。它是一个强大的随机数生成器,官方推荐使用它来生成随机数。在这个方法中,我们使用 RNGCryptoServiceProvider
类生成随机数,将其转换为一个 uint
类型的索引,并使用 chars
字符串中的相应字符来构建结果字符串。
以上就是在 C# 中生成随机字符串的三种方法,可以根据实际需求选择合适的方法。