在Scala字符串中插入字符

时间:2014-08-11 07:09:33

标签: string scala scala-collections scalaz ropes

对于任何给定的String,例如

val s = "abde"

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

更新

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

3 个答案:

答案 0 :(得分:5)

试试这个

val (fst, snd) = s.splitAt(2)
fst + 'c' + snd

答案 1 :(得分:2)

Rope data structure证明了StringStringBuffer的有效替代方法,可以在(非常)大字符串中进行大量操作,尤其是在插入和删除方面。

Scalaz包含class Rope[A](请参阅APIRope.scala)和class WrappedRope[A](请参阅API),对绳索字符串进行了大量操作

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

有关绳索的出版物可以在http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.9450&rep=rep1&type=pdf

找到

答案 2 :(得分:2)

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

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

此:

  • 0(第三个参数)元素放在索引2

  • 在索引"c"上插入2

换句话说,就是patching 0 elements at index 2 with the string "c"