Как можно сформировать проверку на строку?

216
13 октября 2021, 00:00

У меня есть проверка такого рода GetName если находит подходящую строчку в тексте path то возвращает определённый текст.

public static string GetName(string path)
{
   if (path.Contains("test"))
   {
       return "Stratring Test";
   }
   if (path.Contains("end"))
   {
       return "Ending Test";
   }
   if (path.Contains("beta"))
   {
       return "Beta Test";
   }
   // и.т.д очень много проверок
}

Можно ли как-нибудь сократить/улучшить данный вариант? Чтобы не писать много if и.т.д

Answer 1

По сути ваш код можно переписать в нечто, похожее на это:

private static Dictionary<string, string> NameCollection = new Dictionary<string, string>
{
    ["test"] = "Starting Test",
    ["end"] = "Ending Test",
    ["beta"] = "Beta Test"
};
public static string GetName(string path) 
    => NameCollection.FirstOrDefault(x => path.Contains(x.Key)).Value;

P.S. Заметили, что у вас постоянно повторяется Test? Я бы на вашем месте и его убрал бы, правда я не знаю какие у вас там другие if/else...

Answer 2

Как вариант, такой код:

class name
{
    public string Path;
    public string _name;
}

В классе:

name[] names =
{
    { "test", "Startring Test" },
    { "end", "Ending Test" }
}; // с инициализацией массива мог накосячить, проверьте

Сам метод поиска:

public static string GetName(string path)
{
    foreach (name n in names)
        if (path.Contains(n.path))
            return n._name;
}
READ ALSO
Сборщик мусора собрал делегат который передавался в неуправляемый код, как этого не допустить?

Сборщик мусора собрал делегат который передавался в неуправляемый код, как этого не допустить?

В общем, отлаживал библиотекурешил поставить музыку которая идет в потоке на паузу, и отойти на минут 10

81
Запуск службы через консоль

Запуск службы через консоль

Как средствами С# на Linux запустить консоль и выполнить в ней определённую команду (в моём случае это запуск/остановка/проверка статуса службы...

202
Неопределенный объект

Неопределенный объект

2 проекта, серверный и клиент, сервер ASPNET Core, Клиент- Angular 8

86