Функції для роботи з текстовими рядками

Макросам часто доводиться опрацьовувати різноманітні текстові дані (тип String). Наприклад, при формуванні словесних повідомлень для діалогу програми і користувача, для обробки вмісту текстових документів і т.п. Крім операції конкатенації (знак “&” або “+”) для з’єднання частин тексту, OOo Basic має стандартний набір функцій для роботи з текстовими рядками.

Насамперед, це пара функцій для роботи з кодом окремого символа:
Chr(код) – перетворює число, яке є кодом сивола в таблиці Unicode у сам символ. Наприклад, Chr(97) = “a” (латинське “a”), Chr(1081) = “й”, а Chr(13) генерує спеціальний сивол переходу тексту на новий рядок, який часто використовують для виводу багаторядкових повідомленнь у вікні MsgBox;
Asc(символ) – здійснює обернене перетворення, тобто, визначає код заданого симола за таблиці Unicode. Наприклад, Asc(“й”) = 1081.

Цікаво, що одноіменні функції у VBA (Microsoft Office) працюють зі старою таблицею кодування символів ASCII, хоча для англомовних користувачів це несуттєво — перші 128 кодів (куди входять і латинські літери) в обидвох таблицях співпадають, а от Asc(“й”) у VBA дорівнює не 1081, а 233.

Наступна група функцій дає можливість оперувати з фрагментами тексту:
Len(рядок) – визначає кількість символів заданого рядка;
String(n, символ) – визначає рядок, який складається з n повторень одного й того ж символа;
Space(n) – визначає рядок, який складається з n пропусків, код Space(5) і код String (5, “ ”), дають той же результат, але перший запис коротший;
Left(рядок, n) – визначає рядок, який складається з n перших символів заданого рядка;
Rigth(рядок, n) – визначає рядок, який складається з n останніх символів вихідного рядка рядка;
InStr ( [ start, ] рядок1, рядок2 [ , compare ]) – визначає позицію першого розташування рядка рядок2 в рядку рядок1 (start – числовий вираз, що задає позицію, з якої починається пошук, а compare – вказує спосіб порівняння рядків, значення 1 (за замовчуванням) — порівняння не враховує регістр символів, 0 — порівняння залежить від регістру символів);
Mid(рядок, k [ , n] ) – виділяє з заданого рядка текст, що починається з позиції k і містить n наступних символів рядка. В OOo Basic передбачена одноіменна процедура Mid(рядок, k, n, рядок2), яка заміняє рядком2 n символів у заданому рядку, починаючи з позиції k.

Наступну групу функцій, найчастіше використовують для коригування текстових даних, отриманих від користувача. Очевидно, що для будь-якої програми текст “ Кобзар” відрізняється від тексту “Кобзар”, так само як і “Змінна X” від “змінна x”. Тому у макросах, які працюють з текстом для врахування згаданих нюансів можна використовувати такі функції:
LTrim(рядок) – створює копію рядка без пробілів на початку;
RTrim(рядок) – створює копію рядка без пробілів в кінці;
Trim(рядок) – створює копію рядка без пробілів на початку та в кінці;
Lcase(рядок) – переводить усі букви рядка до нижнього регістру;
Ucase(рядок) – переводить усі букви рядка до верхнього регістру.