Строка маски с другой строкой шаблона - PullRequest
1 голос
/ 10 февраля 2020

Я хотел бы замаскировать числа в соответствии с шаблоном. Если число 22123123123 и шаблон xxxxx *** xxx, результат маскирования должен быть 22123 *** 123. Я написал код:

private String maskNumberWithPattern(String number) {
    char[] pattern = "xxxxx***xxx".toCharArray();
    char[] numberInput = number.toCharArray();
    StringBuffer stringBuffer = new StringBuffer();
    for (int i = 0; i < pattern.length; i++) {
        if(pattern[i] == '*') {
            stringBuffer.append("*");
        } else {
            stringBuffer.append(numberInput[i]);
        }
    }
    return stringBuffer.toString();
}

Есть ли какой-нибудь стандартный метод API для этого?

1 Ответ

0 голосов
/ 10 февраля 2020

Из вашего кода не ясно, как точно работает ваш шаблон. Например, что должно произойти, если входная строка длиннее вашего шаблона? Есть ли вероятность того, что шаблон не совпадает? Et c. Я не знаю ничего подобного ...

Полагаю, что шаблоны подстановочных знаков или регулярные выражения - самая легкая вещь, которую вы можете получить здесь:

private static String maskNumberWithPattern(String number) {
    Pattern pattern = Pattern.compile("(\\d{5})(\\d*)(\\d{3})");
    Matcher matcher = pattern.matcher(number);
    if (matcher.matches()) {
        String group = matcher.group(2);
        return matcher.group(1) + StringUtils.repeat('*', group.length()) + matcher.group(2);
    }
    else {
        return number;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...