针对以下问题寻找最佳实践Java方法 我有一个(相对)长的字符串和一组(非重叠的)更改 - 让我们说更改有签名:
change(int startIndex, int endIndex, String replacement);
,一个例子是
assert doChange("aaa",new Change(1,2,"hello")).equals("aHelloa");
我的计划是向后工作(因此避免了变化的索引),尽管每次都会将字符串分成三个,然后在替换中拼接。但我可以想象这有一个更有效/类似Java的方法......我是否错过了一个API调用?
答案 0 :(得分:1)
标准Java String是不可变的,这使得它不适合扩展的基于字符串的操作。但是还有类StringBuffer和StringBuilder,它们代表了一个可操作的可变字符串。他们甚至有一个原生的replace(start, end, str)
方法,它完全符合您的要求。
这两个类之间的主要区别是StringBuffer是线程安全的,而StringBuilder不是。如果没有多个线程访问同一个字符串,请使用StringBuilder,因为它通常执行得更快。