У меня много аргументов if, else if, и я знаю, что должен быть лучший способ сделать это, но даже после поиска stackoverflow я не уверен, как это сделать в моем конкретном случае.
Я анализирую текстовые файлы (счета) и назначая имя поставщика услуг переменной (txtvar.Provider) на основе того, будут ли отображаться определенные строки на счете.
Это небольшой пример того, что я делаю (не смейтесь, я знаю, что это грязно). В целом, Есть приблизительно 300, если, иначе, если.
if (txtvar.BillText.IndexOf("SWGAS.COM") > -1)
{
txtvar.Provider = "Southwest Gas";
}
else if (txtvar.BillText.IndexOf("georgiapower.com") > -1)
{
txtvar.Provider = "Georgia Power";
}
else if (txtvar.BillText.IndexOf("City of Austin") > -1)
{
txtvar.Provider = "City of Austin";
}
// And so forth for many different strings
Я хотел бы использовать что-то вроде оператора switch, чтобы быть более эффективным и читаемым, но я не уверен, как бы сравнить BillText. Я ищу что-то вроде этого, но не могу понять, как заставить его работать.
switch (txtvar.BillText)
{
case txtvar.BillText.IndexOf("Southwest Gas") > -1:
txtvar.Provider = "Southwest Gas";
break;
case txtvar.BillText.IndexOf("TexasGas.com") > -1:
txtvar.Provider = "Texas Gas";
break;
case txtvar.BillText.IndexOf("Southern") > -1:
txtvar.Provider = "Southern Power & Gas";
break;
}
Я определенно открыт для идей.
РЕДАКТИРОВАТЬ: Чтобы ответить на вопрос, который предполагается... Да, мне понадобилась бы возможность определить порядок, в котором были оценены значения. Как вы можете себе представить, при синтаксическом анализе для сотен немного разных макетов я иногда сталкиваюсь с проблемой отсутствия однозначно уникального индикатора того, к кому принадлежит поставщик услуг. (Спасибо за все замечательные предложения! Я был вне офиса в течение нескольких дней и обойдусь, чтобы попробовать их как можно скорее)