Specifi c строк как можно Аргументы - Перечисления? - PullRequest
1 голос
/ 24 февраля 2020

для инструмента, который я пишу, мне нужен генератор "случайного текста". Я хочу, чтобы пользователь мог выбирать из готовых строк, таких как:

const string baseCollection = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
const string numbers = "0123456789";
const string specialChars = "°^!\"§$%&/{([)]=}?\\`´*+~'#,;.:-_><|";
const string germanAddition = "ÄÖÜäöü";
const string frenchAddition = "éàèùâêîôûäëïü眫»";
const string russianAddition = " бвгджзклмнпрстфхцчшщйаэыуояеёюиьъ";

Какие термины следует использовать для запуска этого метода.

public string RanText(int length, ???)
{
    string charCollectionString = "";
    foreach(string str in charCollectionStrings) {
        charCollectionString += str;
    }

    //stuff

    return finalString;
}

Я думал о используя Enum, но те не позволяют строки. Каким будет самый чистый способ создания диапазона возможных аргументов?

1 Ответ

2 голосов
/ 24 февраля 2020

Рассматривали ли вы использовать Dictionary<>? Например:

public enum CType
{
    Base,
    Numbers,
    Special,
    German,
    French,
    Russian
}

public readonly Dictionary<CType, string> Collections = new Dictionary<CType, string>
{
    { CType.Base, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" },
    { CType.Numbers, "0123456789" },
    { CType.Special, "°^!\"§$%&/{([)]=}?\\`´*+~'#,;.:-_><|" },
    { CType.German, "ÄÖÜäöü" },
    { CType.French, "éàèùâêîôûäëïüçœ" },
    { CType.Russian, "бвгджзклмнпрстфхцчшщйаэыуояеёюиьъ" }
};

public string RanText(int length, CType[] parameters)
{
    string charCollectionString = "";
    foreach (CType param in parameters)
    {
        charCollectionString += Collections[param];
    }
}

Тогда:

RanText(1, new[] { CType.Base, CType.Numbers, CType.Russian });
...