如何替换 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]
给定一个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]