我想在java String中进行一些有效的每字符替换,这是使用.toCharArray()
或.getBytes()
的更好方法吗?
示例代码:
// big loop {
String s = "..###.##...#";
char[] c = s.toCharArray();
c[4] = '$';
c[8] = 'A';
// etc
// }
如果这两种方法之间存在一些差异,或者另一种方法之间存在差异,我会很高兴听到它。
答案 0 :(得分:4)
toCharArray
更好。这样你就不必处理编码了。至少不在正常情况下(除了Unicode BMP之外的字符,它们被编码为两个代理字符)。基本上,如果你不必处理中文文本,那不是问题。
从String
到char
数组的转换速度比toBytes()
快:它基本上是一个数组副本,没有字符编码问题。在内部,String
包含char[]
,(至少对于Java 7和更新版本),其他内容并不多。
从String
数组构造char
比从byte
数组构造{{1}}更快,因为不需要字符编码。
答案 1 :(得分:1)
使用StringBuilder
,它就像一个可变字符串:
String s = "..###.##...#";
StringBuilder sb = new StringBuilder(s);
sb.setCharAt(4, '$');
您可以使用许多其他方法来更改内容。当你完成了:
s = sb.toString();
答案 2 :(得分:1)
如果要比较字符值,请使用toCharArray()
。
如果要比较的UTF-8编码的二进制值
字符,请使用getBytes()
。
toCharArray
通常比toByteArray
快,但通常比charAt
慢。