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

在Java中对字符串进行一组更改-最佳实践方法,java,string,replace,Java,String,Replace,正在寻找针对以下问题的最佳实践Java方法。 我有一个(相对)长的字符串和一组(不重叠的)更改要对其进行-假设更改具有签名: change(int startIndex, int endIndex, String replacement); 举个例子 assert doChange("aaa",new Change(1,2,"hello")).equals("aHelloa"); 我的计划是反向工作(这样就避免了索引的变化),每次将字符串分成三个部分,然后在替换部分缝合。但我可以想象这有一

正在寻找针对以下问题的最佳实践Java方法。
我有一个(相对)长的字符串和一组(不重叠的)更改要对其进行-假设更改具有签名:

change(int startIndex, int endIndex, String replacement); 
举个例子

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

我的计划是反向工作(这样就避免了索引的变化),每次将字符串分成三个部分,然后在替换部分缝合。但我可以想象这有一种更有效的/java类方法。。。我错过了一个API调用吗

标准Java字符串是不可变的,这使得它不适合基于字符串的扩展操作。但也有一些类和表示为被操纵而设计的可变字符串。他们甚至有一个本机方法,它完全可以完成您想要做的事情


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

whoops-被分心了。。。感谢您指出。或者更确切地说,StringBuilder几乎总是比StringBuffer更好的选择-它们的功能基本相同,只是StringBuffer是同步的,因此会带来性能成本。。。如果您没有从多个线程对StringBuffer执行并发操作,那么StringBuilder是最好的