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;
}
私は間違いなくアイデアに対してオープンです。
値が評価される順序を決定する機能が必要です。ご想像のとおり、わずかに異なる何百ものレイアウトを解析するときに、請求書がどのサービス プロバイダーに属しているかについて明確に一意のインジケーターがないという問題に遭遇することがあります。