Типы 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
⇑