8

String例如,对于任何给定的

val s = "abde"

如何c: Char在位置 2 之后插入一个字符b

更新

在随机位置进行多次有效插入和删除时要考虑哪个 Scala 集合?(假设 aString可以转换为该集合。)

4

3 回答 3

12

我们可以patch在 s 上使用该方法String,以便String在特定索引处插入 a:

"abde".patch(2, "c", 0)
// "abcde"

这:

  • 在索引处删除0(第三个参数)元素2

  • "c"在索引处插入2

换句话说,这意味着patching 0 elements at index 2 with the string "c"

于 2019-01-29T11:55:51.537 回答
6

试试这个

val (fst, snd) = s.splitAt(2)
fst + 'c' + snd
于 2014-08-11T07:25:39.697 回答
2

Rope 数据结构被证明是对(非常)大的字符串进行大量操作的有效替代方案StringStringBuffer尤其是在插入和删除方面。

Scalaz包括class Rope[A](参见APIRope.scala)和class WrappedRope[A](参见API)以及对绳索的大量操作。

Java 中的实现包括http://ahmadsoft.org/ropes/。可以在http://www.ibm.com/developerworks/library/j-ropes/找到此 Java 实现的基准测试研究。

可以在http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.9450&rep=rep1&type=pdf找到关于绳索作为字符串替代品的出版物

于 2014-08-14T18:40:04.707 回答