Code:

{ **** UBPFD *********** by delphibase.endimus ****

>> Сканирование строки начиная с указанной позиции с целью нахождения слова.

 

Функция предназначена для разбиения строки на слова. Границы слов

определяются по разделителям.

 

Описание параметров:

 

S - строка, в которой производится поиск;

 

StartPos - на входе принимает позицию с которой начинается сканирование

строки, на выходе содержит позицию символа, с которого начинается слово;

 

WordLen - на выходе содержит длину найденного слова;

 

Delimiters - множество, содержащее символы-разделители слов;

 

Возвращаемое значение - true если слово найдено, инече false;

 

Зависимости: SysUtils

Автор: vuk, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Copyright: Алексей Вуколов

 

***************************************************** }

 

function WordScan(const S: string; var StartPos, WordLen: integer;

Delimiters: TSysCharSet): boolean;

var

i, l: integer;

begin

Result := false;

WordLen := 0;

 

i := StartPos;

l := length(s);

StartPos := 0;

while i <= l do

if s[i] in Delimiters then

inc(i)

else

begin

StartPos := i;

break;

end;

 

while i <= l do

ifnot (s[i] in Delimiters) then

begin

inc(i);

inc(WordLen);

end

else

break;

 

Result := WordLen <> 0;

end;

//Пример использования:

 

//Консольная программа, выводящая на экран слова из заданной строки.

 

program Project1;

{$APPTYPE CONSOLE}

uses SysUtils;

 

var

s: string;

wStart, wLen: integer;

begin

s := 'This is a test string. String contains delimiters.';

wStart := 1;

wLen := 0;

while WordScan(s, wStart, wLen, [' ', '.', ',']) do

begin

writeln(copy(s, wStart, wLen));

inc(wStart, wLen);

end;

readln;

end.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить