我有一个可变长度的银行帐号。
1234567890123
0987654321
我想屏蔽帐号以供查看,但最后 4 位数字除外。
XXXXXXXXX0123
XXXXXX4321
有没有办法让它使用
String.Format
掩盖除最后 4 个数字之外的所有数字,而不使用 Substring
提取最后 4 个数字?
编辑:
子串没有任何问题。我只是想看看是否有一个简单的格式化字符串可以将除最后 4 个字符之外的所有字符转换为其他字符。
使用子字符串有什么问题?
但是,如果你把数字放在
long
中(需要保存所有数字),你可以做 number % 10000
来提取最后四位数字,以及 XXX 的固定字符串...
回答问题的字面措辞,而不是您可能真正的意思:)您可以实现一个自定义格式化程序来打印屏蔽帐号,然后会有一个“简单格式字符串”以您想要的方式打印内容
本页上的第二个示例格式化帐号(所有数字)。可以对其进行修改以打印蒙版版本。
public class AccountNumberMasking {
public static void main(String[] args) {
String accountNumber = "1234567890123456";
String maskedAccountNumber = maskAccountNumber(accountNumber);
System.out.println("Masked Account Number: " + maskedAccountNumber);
}
public static String maskAccountNumber(String accountNumber) {
int length = accountNumber.length();
int visibleDigits = 4; // Number of digits to keep visible
if (length <= visibleDigits) {
return accountNumber; // no masking
}
StringBuilder masked = new StringBuilder();
for (int i = 0; i < length - visibleDigits; i++) {
masked.append('X');
}
masked.append(accountNumber.substring(length - visibleDigits)); //masked
return masked.toString();
}
}