1 Востаннє редагувалося Yola (29.01.2017 10:41:21)

Тема: Вставка підрядків в один великий рядок

у мене є рядок на 200 000 символів. треба в ньому замінити \index{термін1} на \index0001{термін1}, \index{термін2} на \index0002{термін2} і т.д. Загальна кількість замін відома наперед. Навіть позиції для замін відомі.

Як це зробити з хорошою швидкодією?

У С++ я б виділив місце під новий рядок необхідного розміру. І копіював туди від заміни до заміни, між копіюваннями вставляючи додаткові символи.

2

Re: Вставка підрядків в один великий рядок

http://javascript.ru/string/replace
https://learn.javascript.ru/regexp-methods
http://alexdev.ru/398/

можна регуляркою, можна розрізати по позиціях стару строку і зібрати нову, як завгодно
логічно, що другий варіант -- меньше процесор їсть

3

Re: Вставка підрядків в один великий рядок

221VOLT написав:

логічно, що другий варіант -- меньше процесор їсть

Треба тестувати. Там стільки оптимізацій, що не вгадаєш.

4

Re: Вставка підрядків в один великий рядок

koala написав:
221VOLT написав:

логічно, що другий варіант -- меньше процесор їсть

Треба тестувати. Там стільки оптимізацій, що не вгадаєш.

що там тестувати ще?
регулярка точно повільніша за просто вирізку підстроки з номеру позиції