【问题标题】:Making a set of changes to a string in Java - best practice approach在 Java 中对字符串进行一组更改 - 最佳实践方法
【发布时间】:2014-06-05 08:33:54
【问题描述】:

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

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

一个例子是

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

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

【问题讨论】:

标签: java string replace


【解决方案1】:

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

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

【讨论】:

  • 注意 StringBuilder 几乎总是比 StringBuffer 更好 - 它们的功能基本相同,只是 StringBuffer 是同步的,因此会带来性能成本......如果你'如果不从多个线程对 StringBuffer 执行并发操作,那么最好使用 StringBuilder
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多