Pascal. Типы PAnsiChar и PWideChar. Функции поиска и получения информации о строках

Типы PAnsiChar и PWideChar. Функции поиска и получения информации о строках


Содержание


Поиск на других ресурсах:

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!

 


Связанные темы