如何替换 char 数组中的 Char 序列而不将其转换为 java 中的字符串

How to replace Char Sequence in a char array without converting it to String in java

给定一个char[],需要用空String替换char[]中的一个char序列。我通过将 char[] 转换为字符串并使用 replace 方法来实现它。但我需要避免将 char[] 转换为 String,因为它包含敏感数据。 如何在不转换为String的情况下将其替换为char[]?

当前代码,

char[] chars = charArray;
String str = String.valueOf(chars)
                        .replaceAll("(.*?)-----", "")
                        .replaceAll("\s", "");

A Matcher 接受一个 CharBuffer,您可以使用 CharBuffer.wrap(chars) 轻松获得它。对于输出,您可以使用内部不使用字符串的 StringBuilder。当你完成处理后,你可以用getChars(...)方法取出字符。

char[] chars = {'a','b','c','d','-','-','-','-','-','e','f','g','h'};

Pattern p = Pattern.compile("(.*?)-----");
Matcher m = p.matcher(CharBuffer.wrap(chars));

StringBuilder sb = new StringBuilder();
while (m.find()) {
    m.appendReplacement(sb, "");
}
m.appendTail(sb);

chars = new char[sb.length()];
sb.getChars(0, sb.length(), chars, 0);

System.out.println(Arrays.toString(chars)); // output: [e, f, g, h]