В Pascal строкой называется массив из Литерных символов, где 0-ое значение занято размером строки.
Общее.
При объявлении строки можно задать её размер. Максимальный размер строки 255 символов. По умолчанию, если размер строки не указан явно, в Borland Pascal и Turbo Pascal размер строки будет равен 255 символов, в UCSD Pascal – 80. В FreePascal и Delphi не ограниченная переменная string имеет на самом деле имеет тип AnsiString который может занимать максимальный размер в памяти до 2 Гб это 2147483646 символов.
В Object Pascal строковая переменная так же имеет ограничение в 2 Гб.
Объявление строки.
Что бы объявить строку, в блоке var надо указать тип string и возможно указать кол-во элементов, по следующему шаблону:
Пример объявления строковой переменной:
Delphi/Pascal
s1 , s2 : string [ 80 ] ;
Можно так же объявить строку, через объявления пользовательского типа.
Шаблон такого способа будет выглядеть так:
Delphi/Pascal
MyString = string [ 80 ] ;
s : MyString ;
#8 Паскаль: String. Строки, строковый тип данных и работа с ним
Процедуры предназначенные для работы над строками:
Delete
Procedure Delete(Var Str: String; Poz: Integer; Count: Integer); — Из строки Str удаляет Count символов, начиная с позиции Poz.
Delphi/Pascal
program DeleteString ;
Str : string ;
Str : = ‘123456789’ ;
Delete ( Str , 3 , 4 ) ;
Writeln ( Str ) ;
В результатае строка Str будет иметь значение ‘12789’ соответственно 4 символа начиная с третьего были удалены ‘3456’.
Insert
Procedure Insert(S: String; Var Str: String; Poz: Integer); — Вставляет строку S в строку Str, начиная с позиции Poz.
Delphi/Pascal
program InsertString ;
Str : string ;
Str : = ‘123456789’ ;
Insert ( ‘000’ , Str , 3 ) ;
Writeln ( Str ) ;
В результатае строка Str будет иметь значение ‘120003456789’ соответственно была вставлена подстрока ‘000’ начиная с третьего символа.
Str
Procedure Str(IR:[Integer;Real] ; var Str: String); — Преобразует числовое значение IR в строку, и помещает его в строку Str.
Delphi/Pascal
program IntOrRealToString ;
Str ( 123 , S ) ;
Writeln ( S ) ;
В результате строка S будет иметь значение ‘123’.
Val
Procedure Val(Str: String; var IR:[integer, real]; var Error: Integer); — Преобразует значение Str в целочисленный или вещественный тип и помещает результат в переменную IR. В переменную error будет помещаться позиция первого символа, на котором произошла ошибка.
Delphi/Pascal
program StringToRealOrInteger ;
i , error : Integer ;
Val ( S , i , Error ) ;
Writeln ( i ) ;
Writeln ( Error ) ;
В результате переменная i будет содержать число 123, а переменная Error число 4 .
Функции предназначенные для работы со строками:
Copy
Function Copy(Str: String; Poz: Integer; Count: Integer): String; — функция Сopy возвращает строку содержащую Count символов, начиная с Poz.
Delphi/Pascal
program StringCopy ;
S , SCopy : string ;
S : = ‘123456789’ ;
SCopy := Copy ( S , 2 , 4 ) ;
Writeln ( SCopy ) ;
Программирование на языке Pascal. Урок 9. Строки.
В результате в переменной SCopy будет строка ‘2345’ .
Concat и +
Function Concat(Str1[,Str2,…,StrN]: String): String; — Результатом функции будет строка, являющаяся объединением строк Str1[,Str2,…,StrN]. Если в результате получится строка больше 255 символов, то строка обрежеться до 255 -ого символа.
Delphi/Pascal
program ConcatString ;
S := Concat ( ‘123’ , ‘4’ , ‘5’ , ‘678’ , ‘9’ ) ;
Writeln ( S ) ;
В результате в строке S будет значение ‘123456789’.
Такой же результат можно добиться используя оператор + (сложения):
Delphi/Pascal
program ConcatString ;
S : = ‘123’ + ‘4’ + ‘5’ + ‘678’ + ‘9’ ;
Writeln ( S ) ;
Length
Function Length(Str: String) : Integer; — результатом данной функции будет текущая длина строки.
Delphi/Pascal
program LengthString ;
I : Integer ;
I := Length ( ‘123456789’ ) ;
Writeln ( I ) ;
В результате в переменной I будет содержаться число 9, что соответствует длине строки ‘123456789’.
Pos
Function Pos(S: String; Str: String): Byte; — Функция Pos возвращает позицию первого вхождения строки S в строку Str. Если строки S нет в строке Str, то возвращается 0.
Delphi/Pascal
program PosString ;
i : integer ;
i := Pos ( ‘456’ , ‘123456789’ ) ;
Writeln ( i ) ;
В результате в переменной i будет содержаться число 4, что соответствует началу первого вхождени подстроки ‘456’ в строку ‘123456789’.
Так же к строкам можно применить логические операции:
‘=’ — операция равно. Если две строки равны результат будет TRUE, в противном случае FALSE.
<> — операция не равно. Если строки равны результат будет FALSE, в противном случае TRUE.
— операции больше или меньше. Сравнивает две строки по алфавиту. так например ‘a’
Delphi/Pascal
program LogString ;
Writeln ( ‘Àíòîí’ < ‘John’ ) ; < FALSE >
Writeln ( ‘Anton’ = ‘John’ ) ; < FALSE >
Writeln ( ‘Anton’ = ‘Anton’ ) ; < TRUE >
ВКонтакте ( X )
Facebook ( X )
Думьянус Ностардамус
Хорошой сайт, хорошой
Данил Женин
тут ошибка в слове алфавит.
Спасибо, поправил.
Данилл Женин
можно ли сделать через строки сложение длинных целых чисел
сделать можно … но мне кажется инструмент не тот.. или я вас не так понял.
В классическом паскале строки 255 символов. Конечно в современных реинкарнациях максимальное количество символов должен быть больше. Но всё равно это как то не рационально. Предлагаю числа хранить в файлах.
Брать посимвольно, складывать сохранять в конец 3 файла. и в памяти надо хранить 1 или 0.
В итоге в случае прирывания процесса… чисто теоретически мы можем начать с места на котором остановились. Если же числа не настолько большие… то в принципе в современных компиляторах есть всякие типы double. которые вполне справляются со сложением больших чисел. (вопрос точности Например Powershell:
Источник: coolcode.ru
Pascal. Строки символов типа String. Функции работы со строками символов
Строки символов типа String. Функции работы со строками символов. Функции Concat , Copy , Delete , Insert , Length , Pos , Val , Str
Поиск на других ресурсах:
1. Функция Concat . Конкатенация (слияние) строк
Для конкатенации (добавления, слияния) строк используется функция Concat . Общая форма использования функции следующая
ResStr := Concat(S1:string; S2:string [; . SN:string])
- S1 , S2 , SN – строки, которые нужно объединить;
- ResStr – результирующая строка.
Для вызова функции нужно указывать как минимум одну строку-параметр. Результат выполнения функции – результирующая строка типа string .
Пример.
program Project1; uses SysUtils; var S1, S2, S3, ResStr : String; begin // Функция Concat() — конкатенация строк S1 := ‘Hello’; S2 := ‘,’; S3 := ‘ world’; ResStr := Concat(S1, S2, S3, ‘!’); Writeln(ResStr); // Hello, world! Readln; end.
Результат выполнения программы
Hello, world!
2. Функция Copy . Получить копию подстроки из указанной строки
Для выделения некоторого фрагмента из строки используется функция Copy , имеющая следующее использование
ResStr := Copy(S, Start, Len);
- S – строковая величина типа String , из которой выделяется фрагмент;
- Start – величина типа Integer , определяющая позицию начала выделяемого фрагмента;
- Len – величина типа Integer , определяющая количество символов фрагмента, которые нужно выделить.
- ResStr – результатом выполнения этой процедуры есть величина типа String .
Пример.
program Project1; uses SysUtils; var S1, S2, S3: String; begin // Функция Copy() — получить подстроку из строки S1 := ‘1234567890’; // исходная строка S2 := Copy(S1, 4, 3); // S2 = ‘456’ Writeln(S2); S3 := Copy(S1, 8, 5); // S3 = ‘890’ Writeln(S3); Readln; end.
Результат выполнения программы
456 890
3. Процедура Delete . Удаление подстроки из строки
С помощью процедуры Delete можно удалить некоторый фрагмент из строки. Общий вид процедуры:
Delete(S, Start, Len)
- S – строковая величина, из которой удаляется фрагмент;
- Start – порядковый номер первого символа удаляемого фрагмента;
- Len – количество символов фрагмента, которые нужно удалить.
Пример.
program Project1; uses SysUtils; var S : String; begin // 1. Исходная строка S := ‘ABCDEF’; // 2. Удалить фрагмент CD delete(S, 3, 2); // S = ‘ABEF’ Writeln(S); // 3. Задать новую строку S := ‘123456789’; // 4. Удалить фрагмент ‘4’ delete(S, 4, 1); Writeln(S); Readln; end.
Результат выполнения программы
ABEF 12356789
4. Процедура Insert . Добавить подстроку к строке
Для вставки в заданную строку другой подстроки используется процедура Insert . В общем случае использование этой процедуры следующее
Insert(S, S_new, Start);
- S – строковая величина – вставляемый фрагмент;
- S_new – строковая величина, в которую вставляется фрагмент S и где получается результат вставки;
- Start – порядковый номер символа в строке S_new , перед которым вставляется фрагмент S . Значение Start нумеруется с 1.
Пример.
program Project1; uses SysUtils; var S1, S2, S3: String; begin // Процедура Insert() — вставить подстроку в строку // 1. Вставка на начало строки S1 := ‘ABCD’; Insert(‘000’, S1, 1); Writeln(S1); // 2. Вставка посредине строки S1 := ‘12345678’; // Исходная строка S2 := ‘ABC’; // Вставляемая строка // Вызов процедуры Insert Insert(S2, S1, 3); // S1 = 12ABC345678 Writeln(S1); // 3. Добавление в конец строки S1 := ‘12345678’; Insert(‘ABCD’, S1, 9); // S1 = 12345678ABCD Writeln(S1); Readln; end.
Результат выполнения программы
000ABCD 12ABC345678 12345678ABCD
5. Функция Length . Получить текущую длину строки
Для определения длины строки используется стандартная функция Length . В наиболее общем случае использование функции может быть следующим
Len := Length(S);
- S – строка типа String ;
- Len – количество символов в строке S (длина строки).
Пример.
program Project1; uses SysUtils; var S : String; Len : Integer; begin // Функция Length() — получить длину строки S := ‘Hello, world!’; Len := Length(S); // Len = 13 Writeln(Len); Len := Length(»); // Len = 0 Writeln(Len); Readln; end.
Результат выполнения программы
13 0
6. Функция Pos . Поиск подстроки в строке
Для определения местоположения искомого фрагмента строковой величины можно воспользоваться функцией
position := pos(S_find, S);
- S_find – искомая подстрока;
- S – строка;
- Position – позиция, с которой начинается подстрока S_find в строке S . Значение Position есть типа Byte и нумеруется с 1. Если искомой подстроки в строке не существует, то Position = 0 .
Пример.
program Project1; uses SysUtils; var S : String; Position : Byte; begin // Функция Pos() — определить позицию вхождения подстроки в строку // 1. Подстрока есть в строке S := ‘123456789’; Position := Pos(‘345’, S); // Position = 3 Writeln(Position); // 2. Подстроки нету в строке Position := Pos(‘ABCD’, ‘ABC’); // Position = 0 Writeln(Position); // 3. В строке есть несколько вхождений подстроки Position := Pos(‘AB’, ‘ABCD ABC ABD BAB’); // Position = 1 Writeln(Position); Readln; end.
Результат выполнения программы
3 0 1
7. Процедура Val . Конвертировать строку в число
Процедура Val позволяет преобразовать строку в число. При этом считается, что строка является представлением числа в символьной форме (например, ‘2.85’, ‘1879’). Эта процедура производит обратную операцию по отношению к процедуре Str .
В наиболее общем случае использование процедуры Val имеет вид:
val(S, V, ErrCode);
- S – строковая величина;
- V – величина числового типа, которую нужно преобразовать;
- ErrCode – код результата выполнения процедуры. Если преобразование произошло успешно, то ErrCode=0 . Если из строки S невозможно получить число V , то ErrCode равен номеру позиции в строке S , которую нельзя преобразовать. К примеру, для строки ‘123A56’ вызов процедуры Val вернет ErrCode = 4 .
Пример.
program Project1; uses SysUtils; var S : String; V1 : Integer; V2 : Real; Code : Integer; begin // Процедура Val, // 1. Конвертировать String => Integer S := ‘286’; Val(S, V1, Code); // Обработать результат if Code = 0 then Writeln(‘Ok! V1 = ‘, V1) else Writeln(‘Error!
ErrCode = ‘, Code); // 2. Конвертировать String => Real S := ‘-38.25’; Val(S, V2, Code); // Обработать результат if Code = 0 then Writeln(‘Ok! V2 = ‘, V2) else Writeln(‘Error! ErrCode = ‘, Code); // 3. Попытка конвертировать строку, содержащую недопустимые символы S := ’18U7’; // здесь недопустимые символы Val(S, V2, Code); // Code = 3 if Code = 0 then Writeln(‘Ok! V2 = ‘, V2) else Writeln(‘Error! ErrCode = ‘, Code); Readln; end.
Результат выполнения программы
Ok! V1 = 286 Ok! V2 = -3.82500000000000E+0001 Error! ErrCode = 3
8. Процедура Str . Конвертировать число в строку
Процедура Str является обратной процедуре Val и позволяет конвертировать величину числового типа ( Integer , Real и т.д.) в строку типа String . Общая форма использования процедуры
Str(V, S);
- V – величина числового типа, значение которой преобразуется в строковый вид;
- S – результат преобразования строкового типа.
Приклад.
program Project1; uses SysUtils; var S : String; V1 : Integer; V2 : Real; begin // Процедура Str, // 1. Конвертировать Integer => String V1 := 277; Str(V1, S); // S = ‘277’ Writeln(‘S = ‘, S); // 2. Конвертировать Real => String V2 := 8.53; Str(V2, S); Writeln(‘S = ‘, S); Readln; end.
Результат выполнения программы
S = 277 S = 8.53000000000000E+0000
Связанные темы
- Тип String . Операции над строками символов
- Логические типы. Символьные типы. Строчные типы
Источник: www.bestprog.net
Строковый тип данных в Паскале
При работе со строками, как правило, возникает необходимость выполнять их копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции. Они кратко описаны ниже. Функция 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. Процедуры преобразования типов Процедура Str (x, s) преобразует числовое значение x в строку s, при этом для x может быть задан формат, как в процедурах вывода write и writeln. Например: x := 123; s := str(x:6,s); — Результат: s = ‘ 123’. Процедура Val (s, x, errcode) преобразует строку s в значение числовой переменной x, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение x не определено.
Пример.
Задача: выяснить сколько пробелов в введенной строке. program Probely; var s: string; i , n: integer; begin n := 0; writeln(‘Введите исходную непустую строку:’); readln(s); for i:=1 to length(s) do if s[i]=’ ‘ then n := n+1; writeln(‘В строке «‘,s,’ ‘,n,’ пробелов.’); end.
Источник: studfile.net