java - java - 如何替换char数组中的Char序列而不将其转换为Java中的String
问题描述
给定一个 char[],需要将 char[] 中的一个 char 序列替换为空字符串。我通过将 char[] 转换为字符串并使用替换方法来实现它。但我需要避免将 char[] 转换为 String,因为它包含敏感数据。如何在不转换为字符串的情况下在 char[] 中替换它?
当前代码,
char[] chars = charArray;
String str = String.valueOf(chars)
.replaceAll("(.*?)-----", "")
.replaceAll("\\s", "");
解决方案
AMatcher
接受CharBuffer
您可以轻松获得的a CharBuffer.wrap(chars)
。对于输出,您可以使用 a StringBuilder
which 在内部不使用字符串。当你完成处理后,你可以用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]
推荐阅读
- asp.net - log4net 写入“?” 当我使用 %type、%method 和 %line 模式时
- python - 下面的小 x 刻度,上面的主要
- php - 我正在尝试制作这个脚本,但正在向我展示这个问题
- c# - C# - 关闭其他进程的消息框
- php - Webpack 配置 html-webpack-plugin 与 PHP
- angular - Angular css assets url没有指向ng serve中的正确目录
- firebase - 是否可以将字段值移动到 firebase 中同一文档的另一个集合?反应原生
- javascript - 如何访问 nocollapsed 对象名称(使用closure-util 编译)
- php - 使用 db 的 for 循环中的预选选项
- python-sphinx - Sphinx/reStructuredText:是否可以拥有一个 html 文档树,但将其拆分为单独的乳胶/pdf 文档