对于任何给定的String
,例如
val s = "abde"
如何在c: Char
之后的位置2插入字符b
?
更新
要考虑在随机位置进行多次有效插入和删除的Scala集合? (假设可以将String
转换为该集合。)
答案 0 :(得分:5)
试试这个
val (fst, snd) = s.splitAt(2)
fst + 'c' + snd
答案 1 :(得分:2)
Rope data structure证明了String
和StringBuffer
的有效替代方法,可以在(非常)大字符串中进行大量操作,尤其是在插入和删除方面。
Scalaz包含class Rope[A]
(请参阅API和Rope.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"
。