Типи PAnsiChar та PWideChar. Функції пошуку та отримання інформації про рядки
Зміст
- 1. Функція StrEnd. Отримати покажчик на останній нульовий символ рядка
- 2. Функція StrLen. Отримати довжину рядка
- 3. Функція StrPos. Пошук першого входження підрядка в рядку
- 4. Функція StrScan. Пошук першого входження заданого символу в рядку
- 5. Функція StrRScan. Пошук останнього входження заданого символу в рядку
- Споріднені теми
Пошук на інших ресурсах:
1. Функція StrEnd. Отримати покажчик на останній нульовий символ рядка
Функція StrEnd повертає покажчик на символ ‘\0’, який завершує рядок. Оголошення функції для типів PAnsiChar та PWideChar наступні
function StrEnd(const Str: PAnsiChar): PAnsiChar; function StrEnd(const Str: PWideChar): PWideChar;
тут
- Str – рядок, для якого потрібно встановити покажчик на останній символ.
Приклад.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var ps1 : PWideChar; ps2 : PWideChar; begin // Функція StrEnd // 1. Вихідний рядок ps1 := StrNew('Hello, world!'); // 2. Створити новий рядок ps2 := StrNew(ps1); // 3. Скопіювати перші 5 символів рядка ps1 => ps2 StrLCopy(ps2, ps1, 5); // ps2 = 'Hello' // 4. Встановити покажчик на останній нульовий символ рядка ps2 ps3 := StrEnd(ps2); // 5. Додати три символи ! StrCat(ps3, '!!!'); // 6. Вивести рядок ps2 Writeln('ps2 = ', StrPas(ps2)); // ps2 = 'Hello!!!' Readln; end.
Результат
ps2 = Hello!!!
⇑
2. Функція StrLen. Отримати довжину рядка
Функція StrLen повертає кількість символів у рядку без врахування символу ‘\0’ кінця рядка. Специфікація функції має вигляд
function StrLen(const Str: PAnsiChar): Cardinal; function StrLen(const Str: PWideChar): Cardinal;
тут
- Str – рядок, довжину якого потрібно визначити.
Приклад.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var ps1 : PWideChar; length : Integer; begin // Функція StrLen - отримати довжину рядка // 1. Заданий рядок ps1 := StrNew('bestprog'); // 2. Визначити довжину рядка length := StrLen(ps1); // 3. Вивести довжину на екран Writeln('StrLen(bestprog) = ', length); Readln; end.
Результат
StrLen(bestprog) = 8
⇑
3. Функція StrPos. Пошук першого входження підрядка в рядку
Функція StrPos здійснює пошук підрядка в рядку. Оголошення функції для типів PAnsiChar та PWideChar наступне
function StrPos(const Str1, Str2: PAnsiChar): PAnsiChar; function StrPos(const Str1, Str2: PWideChar): PWideChar;
тут
- Str1 – рядок, в якому здійснюється пошук;
- Str2 – підрядок, який потрібно знайти в рядку Str1.
Якщо підрядок знайдено, то функція повертає покажчик на перше входження цього підрядка. Якщо підрядок не знайдено, то функція повертає nil.
Приклад.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var ps1 : PAnsiChar; ps2 : PAnsiChar; ps3 : PAnsiChar; begin // Функція StrPos // 1. Заданий рядок ps1 := 'ABCDEF ABCDEFG'; // 2. Заданий підрядок ps2 := 'DE'; // 3. Знайти підрядок ps2 в рядку ps1 // 3.1. Виклик StrPos ps3 := StrPos(ps1, ps2); // ps3 => 'DEF ABCDEFG' // 3.2. Вивести результат if ps3 = nil then Writeln('Substring ps2 is not in the string ps1') else Writeln(StrPas(ps3)); // 4. Знайти підрядок 'JKLMN' в рядку ps1 // 4.1. Виклик StrPos ps3 := StrPos(ps1, 'JKLMN'); // 4.2. Вивести результат if ps3 = nil then Writeln('Substring ps2 is not in the string ps1') else Writeln(StrPas(ps3)); Readln; end.
Результат
DEF ABCDEFG Substring ps2 is not in the string ps1
⇑
4. Функція StrScan. Пошук першого входження заданого символу в рядку
Функція StrScan використовується для пошуку першого входження заданого символу в рядку. Для типів PAnsiChar та PWideChar функція має наступне оголошення
function StrScan(const Str: PAnsiChar; Chr: AnsiChar): PAnsiChar; function StrScan(const Str: PWideChar; Chr: WideChar): PWideChar;
тут
- Str – рядок, в якому здійснюється пошук символу;
- Chr – символ.
Якщо символ Chr є в рядку Str, то функція повертає покажчик на перше входження цього символу в рядку. Якщо символ в рядку не знайдено, то функція повертає nil.
Приклад.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var ps1 : PAnsiChar; ps2 : PAnsiChar; ps3 : PWideChar; ps4 : PWideChar; begin // Функція StrScan - пошук першого входження заданого символу в рядку // 1. Рядок типу PAnsiChar // 1.1. Задати рядок типу PAnsiChar ps1 := 'ABCDEF ABCDEFG'; // 1.2. Знайти перше входження символу 'F' в рядку ps2 := StrScan(ps1, 'F'); // 1.3. Вивести результат if ps2 = nil then Writeln('The character ''F'' is not in the string ps1') else Writeln('ps2 = ', ps2); // вивести залишок рядка // 2. Рядок типу PWideChar // 2.1. Задати рядок типу PWideChar ps3 := StrNew('Hello, world!'); // 2.2. Знайти символ 'w' в рядку ps4 := StrScan(ps3, 'w'); // 2.3. Вивести результат if ps3 = nil then Writeln('The character ''w'' is not in the string ps1') else Writeln('ps4 = ', ps4); // ps4 = world! // 2.4. Звільнити пам'ять, виділену для ps3 StrDispose(ps3); Readln; end.
Результат
ps2 = F ABCDEFG ps4 = world!
⇑
5. Функція StrRScan. Пошук останнього входження заданого символу в рядку
Функція StrRScan так само як і функція StrScan знаходить символ в рядку. Тільки пошук здійснюється з кінця, тобто функція знаходить останнє входження заданого символу в рядку. Оголошення функції для типів PAnsiChar та PWideChar наступне
function StrRScan(const Str: PAnsiChar; Chr: AnsiChar): PAnsiChar; function StrRScan(const Str: PWideChar; Chr: WideChar): PWideChar;
тут
- Str – рядок, в якому здійснюється пошук;
- Chr – шуканий символ.
Функція повертає покажчик на позицію знайденого символу в рядку. Якщо символу Chr в рядку немає, функція повертає nil.
Приклад.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var ps1 : PAnsiChar; ps2 : PAnsiChar; ps3 : PWideChar; ps4 : PWideChar; begin // Функція StrRScan - пошук останнього входження заданого символу в рядку // 1. Рядок типу PAnsiChar // 1.1. Задати рядок типу PAnsiChar ps1 := 'ABCDEF ABCDEFG'; // 1.2. Знайти останнє входження символу 'A' в рядку ps2 := StrRScan(ps1, 'A'); // 1.3. Вивести результат if ps2 = nil then Writeln('The character ''A'' is not in the string ps1') else Writeln('ps2 = ', ps2); // вивести залишок рядка // 2. Рядок типу PWideChar // 2.1. Задати рядок типу PWideChar ps3 := StrNew('Hello, world!'); // 2.2. Знайти останнє входження символу 'o' в рядку ps4 := StrRScan(ps3, 'o'); // 2.3. Вивести результат if ps3 = nil then Writeln('The character ''o'' is not in the string ps1') else Writeln('ps4 = ', ps4); // ps4 = orld! // 2.4. Звільнити пам'ять, виділену для ps3 StrDispose(ps3); Readln; end.
Результат
ps2 = ABCDEFG ps4 = orld!
⇑
Споріднені теми
- Реалізація рядків типу PChar в пам’яті комп’ютера. Типи PAnsiChar, PWideChar. Виділення пам’яті для рядків. Доступ за індексом
- Функції порівняння двох рядків. Функції StrComp, StrIComp, StrLComp, StrLIComp
- Функції, які змінюють вміст рядка. Функції StrCat, StrLCat, StrLower, StrUpper, StrCopy, StrECopy, StrLCopy, StrMove
- Тип String. Операції над рядками символів
- Функції роботи з рядками символів. Функції Concat, Copy, Delete, Insert, Length, Pos, Val, Str
⇑