我将根据用户提供的自定义格式在报告中显示新西兰和澳大利亚的银行账户。例如,新西兰银行账户可以是 00-0000-0000000-000,最后一位数字(银行账户后缀)是可选的。格式有两部分:
- 破折号的放置
- 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++;
}
}
问题不在于帐户是否有效,而在于格式。请让我知道格式化帐户的更好方法。