ユーザーが指定したカスタム形式に従って書式設定されたレポートに、ニュージーランドとオーストラリアの銀行口座を表示します。たとえば、NZ の銀行口座は 00-0000-0000000-000 で、最後の桁 (銀行口座のサフィックス) はオプションです。フォーマットには次の 2 つの部分があります。
- ダッシュの配置
- 2 桁のプレフィックス
サンプル形式の銀行口座は、01-1234-1234567-55 および 01-1234-1234567-002 です。銀行口座は、フォーマットなしでデータベースに保存されます。String.Format("{0:00-0000-0000000-00#}",121234123456712) を試したところ、予想される 12-1234-1234567-12 ではなく 01-2123-4123456-712 が返されました。
当然のことながら、いつでも銀行口座の長さをテストして switch ステートメントを実行できますが、形式はユーザー定義です。
以下により、ダッシュが正しく配置され、接尾辞が正しいことが保証されます。
// ensure there is a format to use and a bank account is present
if (bankaccountformat != "" && bankaccountformat.Contains('-') && bankaccount != "")
{
int i = 0;
foreach (char dash in bankaccountformat)
{
// add dash in bank account, if bank account is long enough
if (dash == '-' && bankaccount.Length > i)
{
bankaccount = bankaccount.Insert(i, "-");
}
i++;
}
}
問題はアカウントが有効かどうかではなく、フォーマットです。アカウントをフォーマットするためのより良い方法を教えてください。