我想根据模式屏蔽数字。如果编号为 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 方法可以实现这一点?
最佳答案
从您的代码中尚不清楚您的模式的行为究竟如何。例如,如果输入字符串比您的模式长,会发生什么情况?模式是否有可能不匹配?等等。我不知道这样的事情......
我想通配符模式或正则表达式是您可以在这里获得的最简单的东西:
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;
}
}
关于java - 使用另一个模式字符串掩码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60150264/