我想知道如何屏蔽除最后 4 个字符串之外的任意数量的字符串字符。 我想使用“X”屏蔽所有字符串
例如
Number:"S1234567B"
结果
Number :"XXXXX567B
谢谢大家
最佳答案
解决方案一
你可以用正则表达式来做。
这是最短的解决方案。
static String mask(String input) {
return input.replaceAll(".(?=.{4})", "X");
}
正则表达式匹配后跟 (zero-width positive lookahead) 至少 4 个字符 ((?=.{4})
) 的任何单个字符 (.
)。用 X
替换每个这样的单个字符。
解决方案2
您可以通过获取 char[]
1、更新它并构建新字符串来实现。
这是最快的解决方案,并且使用最少的内存。
static String mask(String input) {
if (input.length() <= 4)
return input; // Nothing to mask
char[] buf = input.toCharArray();
Arrays.fill(buf, 0, buf.length - 4, 'X');
return new String(buf);
}
1) 比使用 StringBuilder
更好。
解决方案3
您可以使用 repeat(int count)
来做到这一点在 Java 11 中添加到 String
的方法。
这可能是最容易理解的解决方案。
static String mask(String input) {
int maskLen = input.length() - 4;
if (maskLen <= 0)
return input; // Nothing to mask
return "X".repeat(maskLen) + input.substring(maskLen);
}
关于java - 如何使用参数屏蔽 Java 中除最后 4 个字符以外的所有字符串字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58361766/