使用 string.format 屏蔽帐号

问题描述 投票:0回答:2

我有一个可变长度的银行帐号。

1234567890123
0987654321

我想屏蔽帐号以供查看,但最后 4 位数字除外。

XXXXXXXXX0123
XXXXXX4321

有没有办法让它使用

String.Format
掩盖除最后 4 个数字之外的所有数字,而不使用
Substring
提取最后 4 个数字?

编辑:

子串没有任何问题。我只是想看看是否有一个简单的格式化字符串可以将除最后 4 个字符之外的所有字符转换为其他字符。

string formatting masking
2个回答
0
投票

使用子字符串有什么问题?

但是,如果你把数字放在

long
中(需要保存所有数字),你可以做
number % 10000
来提取最后四位数字,以及 XXX 的固定字符串...

回答问题的字面措辞,而不是您可能真正的意思:)您可以实现一个自定义格式化程序来打印屏蔽帐号,然后会有一个“简单格式字符串”以您想要的方式打印内容

本页上的第二个示例格式化帐号(所有数字)。可以对其进行修改以打印蒙版版本。


0
投票
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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.