Организация работы со строками

Содержание

Слайд 2

Тип String VAR Str1: STRING; Str: STRING[20];

Тип String

VAR
Str1: STRING;
Str: STRING[20];

Слайд 3

Типы строк ShortString ANSI, L AnsiString WideString Unicodе PChar PWideChar

Типы строк

ShortString

ANSI, L <=255

AnsiString

WideString

Unicodе

PChar


PWideChar

Слайд 4

Пример работы с ANSIString var string1, string2 : AnsiString; begin //

Пример работы с ANSIString

var   string1, string2 : AnsiString; begin   // Присвоение предложения первой строке   string1 :=

'Hello World';   // Присвоение второй строке значения путем указания string2 на string1   // Число ссылок на строку 'Hello World' равно 2   string2 := string1;     //Разъединение string1 и string2   string2 := string2 + ', how is everyone?';   //Длина первой строки 5   SetLength(string1, 5); writeln('String1 = '+string1);  writeln ('String2 = '+string2); end; String1 = Hello String2 = Hello World, how is everyone?
Слайд 5

В модулях System, SysUtils, Strings определены методы для обработки строк Функциональное

В модулях System, SysUtils, Strings определены методы для обработки строк

Функциональное

назначение методов:
Создание и удаление строк.
Копирование и объединение.
Длина и позиционирование.
Представление строки.
Преобразования  строки в иной тип.
Преобразования  иного типа в строку.
Сравнение строк.
Слайд 6

Средства модуля System VAR Words: STRING; BEGIN Write ('Введите, пожалуйста, слово:

Средства модуля System

VAR Words: STRING;
BEGIN
Write ('Введите, пожалуйста, слово: ');
ReadLn

(Words);
WriteLn ('Это слово состоит из ', Length (Words):3, ' букв!');
END.

Words := 'Фирма Microsoft';
FOR i := 1 TO Length (Words) DO
Words[i] := UpCase (Words[i]);
WriteLn(Words); {Выводится текст 'Фирма MICROSOFT'}

Words := 'картографирование';
WriteLn(Words);
Word1 := Copy(Words,6,4);
WriteLn(Word1); {На экран выводится 'граф'}
Word2 := Copy(Words,2,3);
WriteLn(Word2); {На экран выводится 'арт'}

S1:=‘пар’;
S2:=‘о’;
S3:=‘воз’;
S1:=Concat(s1,s2,s3);

Words := 'Электрификация';
Search_Word := 'кац';
Position := Pos(Search_Word, Words);
IF Position <> 0 THEN
WriteLn ('Фрагмент "', Search_Word, '" содержится',' в слове "',
Words, '", начиная с позиции ', Position:3, '.')
ELSE
WriteLn ('Фрагмент "', Search_Word, "' не содержится ',
' в слове "', Words, '".');

Words := 'компьютеризация';
Delete(Words,1,7);
Delete(Words,3,2);
Word1 := 'Г';
Insert(Word1,Words,1);
Word1 := 'не';
Insert(Word1,Words,3); { Words=Генерация}

Substr:=StringOfChar(‘A’,4);
// Подстрока Substr = ‘AAAA’

x:=123.45;
Str(x:7:3,Str); 
writeln(Str);    // Ответ 123.450 (3 дробных позиции)
Str(x,Str);
writeln(S);  // Ответ 1.2345000000E+02

Val(Str,Val,Code); 
Writeln(Val);  // Ответ 1.2345000000E+02
Val(’123Z’,Val,Code);   // Строка => число с ошибкой
writeln(Val , Code);  // Ответ 4 – номер позиции с ошибкой

Слайд 7

Средства модуля SysUtils

Средства модуля SysUtils

Слайд 8

Строка , как частный случай массива Var s: array [1..10] of

Строка , как частный случай массива

Var s: array [1..10] of char;
Str1:

string[10];
Str2:string[5];
Begin
Str1:=‘Это строка’;
Str2:=‘Пример’;
S:=str1; // s[1]=‘Э’, s[2]=‘т’, s[3]=‘о’,… ,s[10]=‘a’
S:=str2;// s[1]=‘П’, s[2]=‘р’, s[3]=‘и’,… ,s[10]=‘#0’
Слайд 9

Определить, является ли строка палиндромом. Палиндром – это число, слово или

Определить, является ли строка палиндромом. Палиндром – это число, слово или фраза, одинаково

читающиеся в обоих направления.

var
s: string;
i: byte; flag: boolean;
begin
write('String: ');
readln(s);
flag := true;
for i := 1 to length(s) div 2 do
if s[i] <> s[length(s)-i+1] then begin
writeln('No palindrome');
flag := false;
break;
end;
if flag then
write('Palindrome');
readln
end.

РадаР, ТопоТ, ПотоП

Слайд 10

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

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

var
s,s_old,s_new:

string;
i,l_old: byte;
begin
write(‘Исходная строка: '); // я изучаю Turbo Pascal
readln(s);
write(‘Что заменить?'); //Тurbo
readln(s_old);
l_old := length(s_old);
write(‘Чем заменить? '); //Free
readln(s_new);
i := pos(s_old,s);
delete(s,i,l_old);
insert(s_new,s,i);
writeln(s); // я изучаю Free Pascal
end.
Слайд 11

Выделить из строки целые числа и поместить их в массив. var

Выделить из строки целые числа и поместить их в массив.

var
arr:

array[1..100] of string;
i, j: integer; strinput, str: string;
a: char; n: byte;
 begin
i := 1; j := 1; str:=‘’;
readln(strinput); //abc 56 de7 ff15
n := length(strinput); //15
while i <= n do begin
a := strinput[i];
while (a >= '0') and (a <= '9') do
begin
str := str + a; i := i + 1; a := strinput[i]
end;
i := i + 1;
if str <> '' then begin arr[j] := str; j := j + 1; str := '‘; end;
end;
for i := 1 to j - 1 do
write(arr[i]:6); // 56 7 15
end.
Слайд 12

Оставить в строке только один экземпляр каждого встречающегося символа. var s1,s2,s3:

Оставить в строке только один экземпляр каждого встречающегося символа.

var
s1,s2,s3: string;

i: byte;
begin
write('String: '); // adc hghj fgc yugl aa
readln(s1);
s2 := '';
for i:=1 to length(s1) do
begin
s3 := copy(s1,i,1);
if pos(s3,s2) = 0 then
s2 := s2 + s3
end;
writeln('String: ',s2);
readln
end.
Слайд 13

Необходимо сформировать из встречающихся в предложении слов их массив. При этом

Необходимо сформировать из встречающихся в предложении слов их массив. При этом

повторяющиеся слова не должны входить в массив дважды.

var u,w: string; i, j, q: integer;  
ws: array[1..100] of string; : string; len: integer;
begin
writeln('Введите текст: ');
read(u);
len := length(u);
  i := 1; q:=0;
while i <= len do
if (lowercase(u[i]) >= 'a') and (lowercase(u[i]) <= 'z') then
begin w := lowercase(u[i]);
i := i + 1;
while (i <= len) and ((lowercase(u[i]) >= 'a') and (lowercase(u[i]) <= 'z')) do
begin w := w + lowercase(u[i]); i := i + 1; end;
j := 1;
while (j <= q) and (w<>ws[j]) do
j := j + 1;
if j > q then
begin q := q + 1; ws[q] := w; end;
end
else i := i + 1;  
for i := 1 to q do
writeln(ws[i]); end.

Слайд 14

Удалить в строке все лишние пробелы. Лишними считаются пробелы, следующие непосредственно

Удалить в строке все лишние пробелы. Лишними считаются пробелы, следующие непосредственно за

пробелами. Т.е. между словами всегда должен находиться один пробел
Слайд 15

Средства модуля String

Средства модуля String

Слайд 16

Слайд 17

uses SysUtils; var p1,p2,p3,p:pChar; s1,s2:string; MaxLen:word; begin p:=StrNew(’1234′); // Создать строку

uses SysUtils;
var
p1,p2,p3,p:pChar; s1,s2:string; MaxLen:word;
begin
p:=StrNew(’1234′);    // Создать строку (аргумент не пустой)
StrDispose(p); // Удалить строку
 p1:=StrNew(‘AAAAAAAAAAAAAAAA’);          
p2:=StrNew(’123456′); 
p3:=StrNew(‘abcdef’);  

StrCopy(p1,p2);                                     // Копировать p2 в p1
s1:=StrPas(p1);                                      // Преобразовать p1 в s1 для вывода
writeln(s1);                                             // s1 = 123456
StrLCopy(p1,p2,4);                       // Копировать p2 в p1 с ограничением длины
writeln(StrPas(p1));                                // 1234
p1:=StrMove(p1,p3,2); // Копирование из p3 2 элементов в p1 с заменой
writeln(StrPas(p1));                                // ab34
p1:=StrLCat(p1,p2,8);               // Дописать p3 в p1 с ограничением длины
writeln(StrPas(p1));                // ab34abcd
End;