public static void Main()
for (int i=0; i < 500; i++) {
Console.WriteLine(RandomString(4, rnd).Mask("##-##"));
public static string RandomString(int length, Random rnd)
string text = "abcdefghijklmnoprstuvyzxwq0123456789".ToUpper();
char[] array = (text).ToCharArray();
string text2 = string.Empty;
for (int i = 0; i < length; i++)
text2 += array[rnd.Next(array.Length)].ToString();
public static class Extension {
public static string Mask(this string value, string mask, char substituteChar = '#')
return new string(mask.Select(maskChar => maskChar == substituteChar ? value[valueIndex++] : maskChar).ToArray());
catch (IndexOutOfRangeException e)
throw new Exception("Value too short to substitute all substitute characters in the mask", e);