解决方案1
您可以使用正则表达式来完成。
这是shortest解决方案。
static String mask(String input) {
return input.replaceAll(".(?=.{4})", "X");
}
正则表达式匹配任何单个字符 (.
) 接下来是 (零宽度正前瞻) 至少 4 个字符 ((?=.{4})
)。将每个这样的单个字符替换为X
.
解决方案2
You can do it by getting a char[]
1, updating it, and building a new string.
This is the fastest solution, and uses the least amount of memory.
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) Better than using a StringBuilder
.
解决方案3
您可以使用repeat(int count)添加到的方法String
在Java 11中。
这很可能是easiest解来理解。
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);
}