Примеры описания строк:
var s: string;
s1: string[9];
s2: shortstring;
begin
s := 'PascalABC.NET';
writeln(s,' ',s.Length);
SetLength(s,20);
writeln(s,' ',s.Length);
s1 := s;
writeln(s1,' ',s1.Length);
end.
Символ строки
К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:
…
s1[3] := 'h';
writeln (s2[3] + 'r');
Процедуры и функции для работы со строками
Функция Concat (s1, s2, ..., sn)
возвращает строку, являющуюся слиянием строк s1, s2, ..., sn.
Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.
Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.
Процедуры и функции для работы со строками
Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.
Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte.
Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.
Вставка подстроки
Задача:
Вставить в заданную позицию строки другую строку.
var
s1,s2: string;
i: byte;
Begin
write(‘Программа для вставки в заданную позицию строки другую строку');
write(‘Введите первый текст: ');
readln(s1);
write(‘Введите второй текст: ');
readln(s2);
write(‘Введите номер позиции, в которую надо вставить второй текст: ');
readln(i);
insert(s2,s1,i);
writeln(s1);
end.
Замена подстроки в строке
var
s,s_old,s_new: string;
i,l_old: byte;
begin
write(‘Ведите текст: ');
readln(s);
write(‘Что заменить?');
readln(s_old);
l_old := length(s_old);
write(‘ Чем заменить? ');
readln(s_new);
i := pos(s_old,s);
delete(s,i,l_old);
insert(s_new,s,i);
writeln(s);
readln
end.
Задача:
Найти в строке определенную последовательность символов и заменить ее другой.
Копирование части строки
Задача:
Скопировать часть строки с определенной позиции и определенной длины в другую строку.
var
s1,s2: string;
n,len: byte;
begin
write('Введите текст: ');
readln(s1);
write('Введите номер позиции, с которой будет копироваться строка: ');
read(n);
write(‘Введите длину копируемой части: ');
readln(len);
s2 := copy(s1,n,len);
writeln('Ты скопировал: ',s2);
readln;
end.
Удалить пробелы между первым и вторым вопросительным знаком
var
str: string;
q1, q2, l, i: byte;
begin
readln(str);
l := length(str);
q1 := 0;
q2 := 0;
for i:=1 to l do
if str[i] = '?' then begin
q1 := i;
break;
end;
for i:=q1+1 to l do
if str[i] = '?' then begin
q2 := i;
break;
end;
if (q1 <> 0) and (q2 <> 0) then begin
q1 := q1 + 1;
while q1 < q2 do
if str[q1] = ' ' then begin
delete(str,q1,1);
q2 := q2-1;
end
else
q1 := q1 + 1;
writeln(str);
end;
end.
Задача:
Во введенной строке удалить пробелы между первым и вторым вопросительным знаком.
Задача
Дана непустая строка S и целое число N (>0). Вывести строку, содержащую символы строки S, между которыми вставлено по N символов «*» (звездочка).
program zvezda;
Var s:string;
N,i:integer;
C:char;
Begin
Writeln('stroka');
Readln(s);
Writeln('n');
Readln(n);
C:='*';
For i:=1 to n do
Insert(c,s,n);
Writeln(S);
End.
Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз
Задача
program m2;
var s:String;
i,j,n,k:Integer;
f:Boolean;
begin
Writeln('Введите строку:'); Readln(s);
n:=Length(s);
for i:=1 to n do begin f:=True;
for j:=1 to n do if (i<>j) and (s[i]=s[j]) then f:=False;
if f and (k=0) then
Writeln('Символы,которые встречаются в строке один раз:');
if f then begin Write(s[i],' ');
inc(k);
end;
end;
if k=0 then Writeln('В строке нет символов которые встречаются всего один раз.');
Readln;
end.
Источники
http://templated.ru/ingeneriya/117-informacionnye-tehnologii.html
http://pascalabc.net/wiki/index.php?title=Строки_и_символы._Тексты_программ
http://www.cyberforum.ru/pascalabc-net/thread1266946.html
http://pas1.ru/book/export/html/300
http://programmado.ru/55-stroki-v-paskale-tip-string.html
http://mojainformatika.ru/paskal/uroki-paskal-stroki/116-stroki-v-paskal.html
http://nschool.by/text.php?cat=library&textid=10
© ООО «Знанио»
С вами с 2009 года.