我已经有了生成随机字符串的方法.但它很慢.我想使用我不擅长的正则表达式来改进方法.
我的代码:
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}");
有没有办法用正则表达式创建一个随机字符串?
您可以尝试使用以下库从模式生成随机字符串: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)