我有很多if、else if语句,我知道必须有更好的方法来做到这一点,但即使在搜索stackoverflow后,我仍不确定如何在我的特定情况下实现。
我正在解析文本文件(账单),根据账单上出现的特定字符串将服务提供商的名称赋值给变量(txtvar.Provider)。
以下是我正在做的小样本(不要笑,我知道它很凌乱)。总共有大约300个if、else if的语句。
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;
}
我肯定愿意接受各种想法。
但我需要有能力决定值的评估顺序。正如你所想象的那样,当解析成百上千种略有不同的布局时,我偶尔会遇到一个问题,即没有一个明显独特的指示符来确定账单属于哪个服务提供商。
BillText,Provider
元组列表的for循环。 - millimooseswitch(true)
可以工作。 - Asad Saeeduddintxtvar.BillText.Contains("value")
来提高代码的可读性。 - Ben