根据以下代码,我需要根据方法输入在不同情况下生成字符串。我的问题是当我想要生成
9A9A (至少1个数字和1个字母)或者
9A9A9A (至少2个数字和2个字母)时。在大多数情况下,这些条件没有被满足。
private AuthMessage GetAuthCode(string CodeType)
{
Guid Guid = Guid.NewGuid();
Random Random = new Random();
string AuthCode = string.Empty;
string RefCode = string.Empty;
RefCode = Guid.ToString("N");
switch (CodeType)
{
case "0":
{
AuthCode = Random.Next(1000, 9999).ToString();
break;
}
case "1":
{
AuthCode = Random.Next(10000, 99999).ToString();
break;
}
case "2":
{
AuthCode = Random.Next(100000, 999999).ToString();
break;
}
case "3":
{
AuthCode = Regex.Replace(Random.Next(100000, 999999).ToString(), @"^(.{3})(.{3})$", "$1-$2");
break;
}
case "4":
{
AuthCode = Guid.ToString("N").Substring(14, 4).ToUpper();
break;
}
case "5":
{
AuthCode = Guid.ToString("N").Substring(15, 5).ToUpper();
break;
}
case "6":
{
AuthCode = Guid.ToString("N").Substring(6, 6).ToUpper();
break;
}
case "7":
{
AuthCode = Regex.Replace(Guid.ToString("N").Substring(6, 6), @"(.{3})(.{3})", @"$1-$2").ToUpper();
break;
}
case "8":
{
AuthCode = Regex.Replace(Regex.Replace(Convert.ToBase64String(Guid.ToByteArray()), "[/+=]", "").Substring(0, 6), @"(.{3})(.{3})", @"$1-$2").ToUpper();
break;
}
default:
{
AuthCode = Random.Next(1000, 9999).ToString();
break;
}
}
AuthMessage Response = new AuthMessage();
Response.AuthCode = AuthCode;
Response.RefCode = RefCode;
return Response;
}