Из вашего кода не ясно, как точно работает ваш шаблон. Например, что должно произойти, если входная строка длиннее вашего шаблона? Есть ли вероятность того, что шаблон не совпадает? 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;
}
}