Вставить символ в строку Scala
Для любого данного String
, например
val s = "abde"
как вставить символ c: Char
в положении 2, после b
?
Обновить
Какую коллекцию Scala следует учитывать для нескольких эффективных вставок и удалений в случайных позициях? (Предполагая, что String
может быть преобразован в эту коллекцию.)
2 ответа
Структура данных веревки доказывает правильную альтернативу String
а также StringBuffer
для тяжелых манипуляций в (очень) больших строках, особенно в отношении вставок и удалений.
Скалаз включает в себя 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
Мы можем использовать patch
метод на String
s для того, чтобы вставить String
по определенному индексу:
"abde".patch(2, "c", 0)
// "abcde"
Это:
капли
0
(третий параметр) элементы в индексе2
вставки
"c"
по указателю2
что другими словами означает patching 0 elements at index 2 with the string "c"
,