在Java中对字符串进行一组更改 - 最佳实践方法

时间:2014-06-05 08:33:55

标签: java string replace

针对以下问题寻找最佳实践Java方法 我有一个(相对)长的字符串和一组(非重叠的)更改 - 让我们说更改有签名:

change(int startIndex, int endIndex, String replacement); 

,一个例子是

assert doChange("aaa",new Change(1,2,"hello")).equals("aHelloa");

我的计划是向后工作(因此避免了变化的索引),尽管每次都会将字符串分成三个,然后在替换中拼接。但我可以想象这有一个更有效/类似Java的方法......我是否错过了一个API调用?

1 个答案:

答案 0 :(得分:1)

标准Java String是不可变的,这使得它不适合扩展的基于字符串的操作。但是还有类StringBufferStringBuilder,它们代表了一个可操作的可变字符串。他们甚至有一个原生的replace(start, end, str)方法,它完全符合您的要求。

这两个类之间的主要区别是StringBuffer是线程安全的,而StringBuilder不是。如果没有多个线程访问同一个字符串,请使用StringBuilder,因为它通常执行得更快。