使用正则表达式生成随机字符串

Tân*_*Tân 6 c# regex

我已经有了生成随机字符串的方法.但它很慢.我想使用我不擅长的正则表达式来改进方法.

我的代码:

public string GetRandomString()
{
   var random = new Random();
   string id = new string(Enumerable.Repeat("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 16)
              .Select(s => s[random.Next(s.Length)]).ToArray());
   return id;
}
Run Code Online (Sandbox Code Playgroud)

通过使用正则表达式,我可以abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789轻松地压缩字符串:到某些字符.就像:

var regex = new Regex(@"[\w\d]{16}");

有没有办法用正则表达式创建一个随机字符串?

Acc*_*ied 9

您可以尝试使用以下库从模式生成随机字符串:https: //github.com/moodmosaic/Fare

var xeger = new Xeger(pattern);
var generatedString = xeger.Generate();
Run Code Online (Sandbox Code Playgroud)

其次,为什么要使用Enumerate.Repeat生成字符串?你为什么不把它保存在字符串或缓存中呢?重复16次有什么意义?我想你会在每个方法调用时生成这个字符串,这就是为什么它很慢.在我看来,由于代码生成的字符串,字符串实习在您的代码中不起作用.这样做怎么样:

string dictionaryString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
StringBuilder resultStringBuilder = new StringBuilder();
for (int i=0;i<desiredLength;i++)
{
    resultStringBuilder.Append(dictionaryString[random.Next(dictionary.Length)]);
}
return resultStringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)