在java中,如何在不将字符数组转换为字符串的情况下替换字符数组中的字符序列

7cjasjjr  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(311)

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

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

6ljaweal1#

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]

相关问题