Added a mask-based RandomString function.

This commit is contained in:
ruri
2019-04-23 13:44:36 +02:00
parent a16500e79a
commit c6f9af145c
2 changed files with 20 additions and 0 deletions
+19
View File
@@ -78,6 +78,9 @@ namespace RuriLib
/// <summary>Generates a random integer.</summary>
RandomNum,
/// <summary>Generates a random string based on a mask.</summary>
RandomString,
/// <summary>Rounds a decimal input to the upper integer.</summary>
Ceil,
@@ -584,6 +587,22 @@ namespace RuriLib
outputString = (data.rand.Next(randomMin, randomMax)).ToString();
break;
case Function.RandomString:
var lowercase = "abcdefghijklmnopqrstuvwxyz";
var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var digits = "0123456789";
var symbols = "\\!\"£$%&/()=?^'{}[]@#,;.:-_*+";
var allchars = lowercase + uppercase + digits + symbols;
outputString = new string(localInputString
.ToCharArray()
.Select(c => c == 'L' ? lowercase[data.rand.Next(0, lowercase.Length)] : c)
.Select(c => c == 'U' ? uppercase[data.rand.Next(0, uppercase.Length)] : c)
.Select(c => c == 'D' ? digits[data.rand.Next(0, digits.Length)] : c)
.Select(c => c == 'S' ? symbols[data.rand.Next(0, symbols.Length)] : c)
.Select(c => c == 'A' ? allchars[data.rand.Next(0, allchars.Length)] : c)
.ToArray());
break;
case Function.Ceil:
outputString = Math.Ceiling(Decimal.Parse(localInputString, style, provider)).ToString();
break;