Length
Length returns the length of the string or array S , which is limited to 255 for shortstrings. If the string S is empty, 0 is returned.
Note: The length of the string S is stored in S[0] for shortstrings only. The Length function should always be used on ansistrings and widestrings.
For dynamic or static arrays, the function returns the number of elements in the array.
Length also supports arguments of type PChar and PWideChar , in which case it is identical to the StrLen and WStrLen functions, respectively. In this case, the function actually calculates the length of the null-terminated string, and its execution time is proportional to the string length because the terminating null character is searched through a linear scan.
Функция Length
Функция Length в Паскале определяет длину строки. Синтаксис:
function Length(S : AStringType) : Integer;
Второй вариант для динамических массивов:
function Length(A : DynArrayType): Integer;
Функция возвращает длину строки S, которая ограничена значением 255 для коротких строк (в классическом Паскале — это максимальная длина строки). Если S — это пустая строка, то функция возвращает 0.
Функция Length может вычислять длину строки для типов AnsiString и WideString.
Для динамических массивов функция возвращает количество элементов в массиве.
Функция определения длины строки Length также поддерживает параметры типа PChar и PWideChar. В этом случае она работает также, как функции StrLen и WStrLen соответственно. В этом случае функция вычисляет длину строки с нулевым окончанием (с завершающим нулём), а время её выполнения пропорционально длине строки, потому что завершающий нулевой символ ищется путём последовательного перебора всех символов строки.
Как определить длину строки в Паскале
Думаю, уже понятно, что сделать это можно с помощью функции Length. Например, так:
Однако есть и другой способ, о котором мало кто знает. Правда, этот способ можно использовать только с типом ShortString. Но в большинстве случаев этого строкового типа вполне достаточно.
Этот способ позволяет немного сэкономить процессорное время, так как для его использования не требуется тратить это время на вызов функции.
А суть его проста. Дело в том, что в типе ShortString длина строки хранится в нулевом элементе строки. Как известно, в Паскале отсчёт символов в строке начинается с единицы. Однако в типе ShortString есть и нулевой элемент, в котором и хранится длина строки:
Проблема только в том, что эта длина строки хранится как ASCII-код символа, и получить этот элемент можно только как символ. Но это не беда, потому что мы уже умеет преобразовывать символ в его код с помощью функции Ord.
Пример программы см. в конце статьи.
Как задать длину строки в Паскале
В некоторых случаях для экономии памяти можно задать фиксированную длину строки.
Делать это можно, когда вы точно уверены, что для ваших нужд в вашей программе потребуется, например, строка, в которой будет не более какого-то определенного количества символов.
Задать длину строки в Паскале можно так:
Затем с этими переменными можно работать как с обычными строками. Только следует помнить, что при попытке поместить, например, в s04 строку длиной более 4 символов, в эту строку будут помещены только первые четыре символа, а остальные будут отброшены.
Ниже приведён пример программы, где рассмотрены все вышеописанные случаи:
Функция Length
Встроенная функция Length(длина) позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной.
Пример.
write (‘Введите, пожалуйста, слово: ‘);
writeln (‘Это слово состоит из ’, length(word) : 3, ‘ букв!’)
При подсчете фактической длины строки учитываются все входящие в нее символы, в том числе и пробелы.
Функция Upcase
Функция Upcaseпозволяет преобразовывать символ любой литеры из строчного в прописной. Эта функция рассчитана на обработку отдельного символа, поэтому для обработки строки символов с помощью этой функции приходится организовывать цикл.
Пример.
word := ‘Фирма Microsoft’;
for i := 1 to length (word) do word [i] := upcase (word[i]);
Русские литеры не могут обрабатываться этой функцией, поэтому в результате работы этой программы на терминал выдается строка, содержащая большие английские и маленькие русские буквы.
Функция Сopy
Функция Сopyпозволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая функцию copy, необходимо указывать следующие параметры: 1) имя строки, из которой должен извлекаться копируемый фрагмент; 2) позицию в строке, начиная с которой будет копироваться фрагмент; 3) число копируемых символов.
Пример.
w1,w2,w3 : string [20];
w1 := copy (ws, 1, 4); writeln (w1);
w2 := copy (ws, 5, 4); writeln (w2);
w3 := copy (ws, 10, 3); writeln (w3);
В результате выполнения программы на экран выводится:
Сообщения об ошибке не будет в случаях, если начальная или конечная позиции копируемого фрагмента находятся вне пределов исходной строки символов. Результатом выполнения операции в первом случае будет строка нулевой длины, во втором – фрагмент от начальной позиции копирования до конца исходной строки.
Функция Pos
С помощью функции Posосуществляется поиск определенного фрагмента в строке. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой фрагмент начинается. Если в строке фрагмент не найден, то функция возвращает ноль.
sw := ‘Эл’; p := Pos (sw,ws); writeln(p);
sw := ‘три’; p := Pos (sw,ws); writeln(p);
sw := ‘к’; p := Pos (sw,ws); writeln(p);
В результате выполнения программы на экране появляется:
Функция Pos требует полного совпадения искомого фрагмента и фрагмента строки, в которой производится поиск. Большие и маленькие буквы считаются различными символами.
Процедуры Insert и Delete
Процедура Insertвставляет в исходную строку какую-либо другую строку, начиная с указанной позиции. Оператор Insert (w1, ws, 4); вставит строку w1 в строку ws перед 4-ой позицией.
Процедура Deleteудаляет в исходной строке фрагмент определенной длины, начинающийся с указанной позиции. Оператор Delete (ws, 2, 3); удаляет из строки ws фрагмент, состоящий из трех символов и начинающийся со второй позиции.
ws := ‘компьютеризация’; writeln (ws);
delete (ws, 1, 7); writeln (ws);
delete (ws, 3, 2); writeln (ws);
sw := ‘Г’; insert(sw, ws, 1); writeln (ws);
sw := ‘не’; insert(sw, ws, 3); writeln (ws);
В результате работы данной программы на экран будут выведены следующие строки:
Во избежание ошибок при применении процедур Insert и Delete указанные в списке параметров позиции должны обязательно присутствовать в обрабатываемых строках.
Pascal. Строки символов типа String. Функции работы со строками символов
Строки символов типа String. Функции работы со строками символов. Функции Concat , Copy , Delete , Insert , Length , Pos , Val , Str
Содержание
- 1. Функция Concat . Конкатенация (слияние) строк
- 2. Функция Copy . Получить копию подстроки из указанной строки
- 3. Процедура Delete . Удаление подстроки из строки
- 4. Процедура Insert . Добавить подстроку к строке
- 5. Функция Length . Получить текущую длину строки
- 6. Функция Pos . Поиск подстроки в строке
- 7. Процедура Val . Конвертировать строку в число
- 8. Процедура Str . Конвертировать число в строку
Поиск на других ресурсах:
1. Функция Concat . Конкатенация (слияние) строк
Для конкатенации (добавления, слияния) строк используется функция Concat . Общая форма использования функции следующая
- S1 , S2 , SN – строки, которые нужно объединить;
- ResStr – результирующая строка.
Для вызова функции нужно указывать как минимум одну строку-параметр. Результат выполнения функции – результирующая строка типа string .
Пример.
Результат выполнения программы
2. Функция Copy . Получить копию подстроки из указанной строки
Для выделения некоторого фрагмента из строки используется функция Copy , имеющая следующее использование
- S – строковая величина типа String , из которой выделяется фрагмент;
- Start – величина типа Integer , определяющая позицию начала выделяемого фрагмента;
- Len – величина типа Integer , определяющая количество символов фрагмента, которые нужно выделить.
- ResStr – результатом выполнения этой процедуры есть величина типа String .
Пример.
Результат выполнения программы
3. Процедура Delete . Удаление подстроки из строки
С помощью процедуры Delete можно удалить некоторый фрагмент из строки. Общий вид процедуры:
- S – строковая величина, из которой удаляется фрагмент;
- Start – порядковый номер первого символа удаляемого фрагмента;
- Len – количество символов фрагмента, которые нужно удалить.
Пример.
Результат выполнения программы
4. Процедура Insert . Добавить подстроку к строке
Для вставки в заданную строку другой подстроки используется процедура Insert . В общем случае использование этой процедуры следующее
- S – строковая величина – вставляемый фрагмент;
- S_new – строковая величина, в которую вставляется фрагмент S и где получается результат вставки;
- Start – порядковый номер символа в строке S_new , перед которым вставляется фрагмент S . Значение Start нумеруется с 1.
Пример.
Результат выполнения программы
5. Функция Length . Получить текущую длину строки
Для определения длины строки используется стандартная функция Length . В наиболее общем случае использование функции может быть следующим
- S – строка типа String ;
- Len – количество символов в строке S (длина строки).
Пример.
Результат выполнения программы
6. Функция Pos . Поиск подстроки в строке
Для определения местоположения искомого фрагмента строковой величины можно воспользоваться функцией
- S_find – искомая подстрока;
- S – строка;
- Position – позиция, с которой начинается подстрока S_find в строке S . Значение Position есть типа Byte и нумеруется с 1. Если искомой подстроки в строке не существует, то Position = 0 .
Пример.
Результат выполнения программы
7. Процедура Val . Конвертировать строку в число
Процедура Val позволяет преобразовать строку в число. При этом считается, что строка является представлением числа в символьной форме (например, ‘2.85’, ‘1879’). Эта процедура производит обратную операцию по отношению к процедуре Str .
В наиболее общем случае использование процедуры Val имеет вид:
- S – строковая величина;
- V – величина числового типа, которую нужно преобразовать;
- ErrCode – код результата выполнения процедуры. Если преобразование произошло успешно, то ErrCode=0 . Если из строки S невозможно получить число V , то ErrCode равен номеру позиции в строке S , которую нельзя преобразовать. К примеру, для строки ‘123A56’ вызов процедуры Val вернет ErrCode = 4 .
Пример.
Результат выполнения программы
8. Процедура Str . Конвертировать число в строку
Процедура Str является обратной процедуре Val и позволяет конвертировать величину числового типа ( Integer , Real и т.д.) в строку типа String . Общая форма использования процедуры