java - 使用另一个模式字符串掩码字符串

标签 java regex string

我想根据模式屏蔽数字。如果编号为 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/

相关文章:

java - 在 JFrame 上制作网格并用随机颜色填充

c# - 避免在 @ 符号后连字符

javascript - 验证密码的完美解决方案

python - 如何将字符串拆分为单词和空格?

c# - 将泛型类型定义字符串从 C# 样式转换为 CLR 样式

javascript - 如何使用 Javascript 仅在 HTML 字符串的文本部分中查找子字符串?

java - 我可以从子列表中检索开始和结束索引吗?

java - Postgresql 格式化日期

java - 需要一种方法来打印 java 中正则表达式模式的先行部分吗?

java - 在 Google AppEngine 中使用 app.yaml