§ 9. Радковыя велічыні
9.4. Капіраванне, устаўка, замена і выдаленне сімвалаў
Пры рабоце з тэкстам часта даводзіцца вылучаць і ператвараць часткі радкоў. Частку тэксту (падрадок) можна скапіраваць ці выразаць, а затым уставіць у іншае месца ў тэксце. Радок ці яго частка могуць быць заменены на іншы радок. Каманды для выканання аперацый па рабоце з фрагментам тэксту паказаны ў табліцы.
Ва ўсіх камандах пераменная n абазначае пазіцыю (нумар) сімвала, пачынаючы з якога выконваюць аперацыю, а пераменная k — колькасць сімвалаў. Разбяром каманды падрабязней (прыклад 9.9). У выніку выканання каманды substr радок s не змяняецца. Вынік работы функцыі прысвойваецца іншаму радку. Каманды erase, insert і replace змяняюць зыходны радок s. У прыкладзе 9.10 паказана, як выкарыстоўваюцца пералічаныя каманды. Функцыі insert і replace маюць яшчэ адзін варыянт рэалізацыі. Гэты варыянт дазваляе выкарыстоўваць пры ўстаўцы не ўвесь радок s1, а толькі яго частку. У гэтым выпадку задаюцца два дадатковыя параметры: пазіцыя n1 і колькасць сімвалаў k1, якія належаць да радка s1. Параметры дазваляюць вылучыць падрадок у радку s1, які і ўстаўляецца ў зыходны радок: insert(n, s1, n1, k1), replace(n, k, s1, n1, k1). Прыклад 9.11. Напісаць праграму, якая вызначыць, колькі разоў сустракаецца зададзены падрадок у радку. Этапы выканання задання I. Зыходныя даныя: пераменная s — зыходны радок, p — зыходны падрадок. II. Вынік: k — шуканая колькасць. III. Алгарытм рашэння задачы. 1. Уводзім зыходныя даныя. 4.1. Вылучым з радка s падрадок t такой жа даўжыні, што і даўжыня p, пачынаючы з бягучага сімвала 5. Вывад выніку. IV. Апісанне пераменных: s, p, t — string, n1, n2, k — int. |
Прыклад 9.9. Каманды для пераўтварэння радкоў. 1. Запіс s1 = s.substr(n, k); азначае, што ў радку s вылучаюць k сімвалаў, пачынаючы з сімвала, індэкс якога запісаны ў пераменнай n. Сімвалы капіруюцца ў пераменную s1 (дзеянне каманды можна параўнаць з капіраваннем фрагмента тэксту ў буфер абмену). 2. Запіс s.erase(n, k); азначае, што ў радку s вылучаюць k сімвалаў, пачынаючы з сімвала, індэкс якога запісаны ў пераменнай n. Вылучаныя сімвалы выдаляюцца з радка s. Астатнія сімвалы радка зрушваюцца ўлева (дзеянне каманды можна параўнаць з выдаленнем фрагмента тэксту). 3. Запіс s.insert(n, s1); азначае, што ў радок s устаўляюць сімвалы радка s1, устаўка адбываецца ў пазіцыі n. Астатнія сімвалы радка зрушваюцца ўправа (дзеянне каманды можна параўнаць з устаўкай фрагмента тэксту з буфера абмену ў пазіцыю курсора). 4. Запіс s.replace(n, k, s1); азначае, што сімвалы радка s замяняюць на сімвалы радка s1. Замяняюцца k сімвалаў, пачынаючы з сімвала, што стаіць у пазіцыі n. Астатнія сімвалы радка зрушваюцца (дзеянне каманды можна параўнаць з устаўкай фрагмента тэксту з буфера абмену на месца вылучанага фрагмента). Прыклад 9.10. Прыклады выкарыстання каманд (каманды ўжываюцца паслядоўна).
Прыклад 9.11. V. Праграма:
VI. Тэсціраванне. Эфектыўнае рашэнне дадзенай задачы можна атрымаць з дапамогай алгарытму Кнута — Морыса — Прата (КНП-алгарытм)[1]. [1] Котаў У. М., Лапо А. І., Быкадораў Ю. А., Вайцеховіч А. М. Інфарматыка, 9 клас. Мінск: Народная асвета, 2019. С. 44. |