Length — Функция Delphi


Содержание

Length — Функция Delphi

Работа со строками Delphi позволяет извлечь из строки необходимую информацию и представить её в нужном виде. Система предоставляет весь спектр необходимых функций для работы со строками Delphi и преобразования строк Delphi в необходимые форматы:

  • числовой формат, целый и дробный с плавающей точкой;
  • формат времени, даты, даты-времени;
  • преобразование символов к верхнему или нижнему регистру;
  • сравнение строк, поиск в строке и копирование подстроки;
    и многие другие.

Непосредственно сами строки Delphi поддерживают единственную операцию, так называемую операцию конкатенации, то есть присоединения. Несмотря на «научное» название, операция конкатенации выполняет очень простую процедуру. С помощью операции конкатенации одна строка присоединяется к другой:

Результирующая строка S будет суммой двух слагаемых строк. Длина строки, то есть количество символов в строке, возвращается встроенной функцией

function Length(S: String): Integer;

Delphi работает со строками типа String, в котором длина строки записывается в начале строки, перед первым символом. Поэтому индекс первого символа в строке не 0, а 1. То есть, если:

S:=’Строка типа String’;

то S[1] — символ ‘С’, S[2] — символ ‘т’ , последний символ в строке — S[Length(S)], равный ‘g’.

Однако часто приходится иметь дело со строками типа PChar, которые использует операционая система Windows. В строках типа PChar длина строки определяется специальным символом конца строки — #0. Поэтому для использования функций Windows тип String необходимо предварительно переводить в тип PChar. Преобразование типа String в тип PChar выполняет функция

function PChar(S: String): PChar;

Для полноценной работы со строками Delphi используются следующие стандартные процедуры и функции:

Функции преобразования в числовой формат и обратно

Выполняя вычисления, используем для ввода данных и отображения результатов следующие функции, работающие со строками Delphi:

функция IntToStr(N: Integer): String
Преобразует целое число N в строку.
функция StrToInt(S: String): Integer
Преобразует строку S в целое число.
функция FloatToStr(X: Extended): String
Преобразует число с плавающей точкой X в строку.
функция StrToFloat(S: String): Extended
Преобразует строку S в число с плавающей точкой.

Процедуры и функции преобразования дат и времени

Сначала собственно функции, предоставляющие информацию о текущих дате и времени:

функция Now: TDateTime
Возвращает текущую дату и время.
функция Date: TDateTime
Возвращает текущую дату.
функция Time: TDateTime
Возвращает текущее время.

Далее, функции, работающие с составляющими даты и времени (год, месяц, число, день недели, часы, минуты, секунды и даже миллисекунды):

функция DayOfWeek(Date: TDateTime): Integer
Возвращает текущий номер дня недели: 1 — воскресенье, 7 — суббота.
процедура DecodeDate(Date: TDateTime; var Year, Month, Day: Word)
Разбивает дату Date на год — Year, месяц — Month и день — Day.
процедура DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word)
Разбивает время Time на час — Hour, минуты — Min, секунды — Sec и миллисекунды — MSec.
функция EncodeDate(Year, Month, Day: Word): TDateTime
Объединяет год — Year, месяц — Month и день — Day в значение типа TDateTime.
функция EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime
Объединяет час — Hour, минуты — Min, секунды — Sec и миллисекунды — MSec в значение типа TDateTime.

Наконец, собственно, функции, переводящие дату и время из формата TDateTime в строчный формат:

функция DateTimeToStr(DateTime: TDateTime): String
Преобразует дату и время DateTime в строку.
функция DateToStr(Date: TDateTime): String
Преобразует дату Date в строку.
функция TimeToStr(Time: TDateTime): String
Преобразует время Time в строку.

Следующие функции работают с параметрами возвращаемой строки. Функции с приставкой Ansi работают в том числе и с кириллическими символами. Если символы в строках предполагаются исключительно латинские, то можно использовать аналогичные функции, но без приставки Ansi:

функция AnsiLowerCase(const S: String): String
Возвращает строку S, преобразованную к нижнему регистру.
функция AnsiUpperCase(const S: String): String
Возвращает строку S, преобразованную к верхнему регистру.
функция Length(const S: String): Integer
Возвращает количество символов в строке S.
функция Trim(const S: String): String
Удаляет из строки S начальные и завершающие пробелы и управляющие символы.
функция TrimLeft(const S: String): String
Удаляет из строки S начальные пробелы и управляющие символы.
функция TrimRight(const S: String): String
Удаляет из строки S завершающие пробелы и управляющие символы.

Следующие функции сравнивают две строки между собой:

функция AnsiCompareStr(const S1, S2: String): Integer
Сравнивает две строки S1 и S2 с учётом регистра символов.
Возвращает значение 0 если S1>S2
функция AnsiCompareText(const S1, S2: String): Integer
Сравнивает две строки S1 и S2 без учёта регистра символов.
Возвращает значение 0 если S1>S2

Следующие функции осуществляют поиск в текущей строке подстроки, вставляют, удаляют или заменяют подстроку:

функция Pos(Substr: String; Str: String): Integer
Возвращает позицию (индекс) первого вхождения Substr в строке Str. Если Substr нет в Str, возвращает 0.
функция Insert(Source: String; var S: String; Index: Integer): Integer
Вставляет строку Source в строку S, начиная с номера символа, равного Index
процедура Delete(var S: String; Index, Count: Integer)
Удаляет из строки S подстроку, начинающуюся с номера символа, равного Index, и содержащую до Count символов.
функция StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): String
Заменяет в строке S подстроку OldPattern на строку NewPattern с учётом флага TReplaceFlags. Для работы с этой функцией нужно создать переменную типа TReplaceFlags — это множество, и включить в него одно или оба значения из следующих:
rfReplaceAll — будут заменены все вхождения. Если это значение не будет включено во множество, то будет заменено только первое вхождение;
rfIgnoreCase — замена будет без учёта регистра символов. Если это значение не будет включено во множество, то замена будет чувствительна к регистру символов.

Наконец, функция копирования части строки:

функция Copy(S: String; Index, Count: Integer): String
Возвращает подстроку строки S, начиная с номера символа, равного Index и содержащую до Count символов.

Помимо прочего, эту функцию можно использовать для вывода нецелого числа с нужным количеством цифр после запятой. Для этого, сначала получаем строку из числа формата Real, затем находим функцией Pos позицию запятой в этой строке, прибавляем нужное количество и копируем в результат это количество символов. Вот готовая функция:

function RealToStr(X: Real; Count: Integer): String; //Count — количество цифр после запятой
var S: String;
N: Integer;
begin
S:=FloatToStr(X); //после запятой — длинная последовательность цифр
//DecimalSeparator — константа, содержащая истинный разделитель целой и дробной частей числа N:=Pos(DecimalSeparator, S); //позиция запятой в строке
//вычисляем длину строки с нужным количеством знаков после запятой:
if N=0 //если в строке нет запятой — это целое число, и
then N:=Length(S) //тогда просто выводим это число
else N:=N+Count; //иначе вычисляем длину строки
Result:=Copy(S, 1, N); //копируем часть строки в результат
end;

Илон Маск рекомендует:  Iis использование документации

Или вот, к примеру, текст модуля, обеспечивающего ввод в компонент Edit только чисел.

Вопрос про Length !

Привет всем.
Использую функцию length для того что бы узнать сколько символов в строке.

Она работает норм ДО 10 мегабайт !!
Уже при 15 мегабайт текстовом файле, функция length вылетает Выдаёт ошибку переполнения стека!

Вот и вопрос, какая замена есть для length которая берёт большие файлы?
Пробовал StrLen, SizeOf не катит.

17.11.2009, 16:38

Вопрос про константы
Вопрос состоит в следующем, например, я объявляю константу const key : array of longint =.

Вопрос про событие OnKeyPress.
В общем, мне нужно, чтобы при нажатии на кнопки «вниз», «вправо», «влево», «вверх» переменная.

Вопрос про событие OnKeDown.
В общем написал программу, которая при нажатии на кнопки стрелок на форме присваивает определённое.

Вопрос про стирание, отсылку и т.д.
1) как стереть нужный (точнее не нужный) файл ? 2) как найти нужный мне файл и записать его путь.

Вопрос про Delphi/C++ & CD-RОM.
Есть острая необходимость в чтении ATIP-информации (Absolute Time In Pre-groove) с CD-диска. Нужно.

Иллюстрированный самоучитель по Delphi 7 для начинающих

Операции со строками. Функция length. Процедура delete.

В языке Delphi есть несколько полезных при работе со строками функций и процедур. Ниже приведено их краткое описание и примеры использования.

Функция length

Функция length возвращает длину строки. У этой функции один параметр – выражение строкового типа. Значением функции length (целое число) является количество символов, из которых состоит строка.

Например, в результате выполнения инструкций:

Значение переменных n и m будет равно 6 и 20.

Процедура delete

Процедура delete позволяет удалить часть строки. В общем виде обращение к этой процедуре выглядит так:

  • Строка – переменная или константа строкового типа;
  • р – номер символа, с которого начинается удаляемая подстрока;
  • п – длина удаляемой подстроки.

Например, в результате выполнения инструкций:

Значением переменной s будет строка ‘город Петербург’.

Строки Delphi

Сегодня речь пойдет о строках. Строки в Delphi, на мой взгляд не менее важны, чем числа. Если Вы решили стать программистом, то без строк никуда. Как говорится «из песни слов не выкинешь».

В этой статье мы рассмотрим то, как можно работать со строками. Изучим основные функции, разберем их на примерах. Примеры будут не сложные, но очень полезные. Также попробуем комбинировать строковые функции.

Для начала покажу как определить строку и присвоить ей значение

Разберемся теперь с функциями обработки строк:

Функция Length()

Функция Length() – возвращает количество символов в строке. Выглядит она так:

Function Length(S): Integer;

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

В примере мы выводим сообщение с длиной строки str1.

Функция Copy()

Функция Copy() – функция возвращаем заданный отрывок строки.

function Copy ( str1 : string, Index, Count : Integer ) : string;

  • str1 – строка, из которой мы хотим извлечь часть.
  • Index – порядковый номер начального символа.
  • Count – сколько символов мы хотим извлечь.

Приведу пример и все станет на свои места

Функция Pos()


Функция Pos() – возвращает позицию одной строки в другой. Так сказать, ищет подстроку в строке. Если что-то находит, то возвращает номер символа начиная с которого началось совпадение.

function Pos ( const str2, str1 : string ) : Integer;

  • str2 – строка, которую ищем.
  • str1 – строка, в которой ищем.

Напишем пример, в котором будем искать вхождение «стр» в str1 и выведем найденное число в сообщении.

Процедура Delete()

Процедура Delete() – удаляет часть строки.

procedure Delete ( var Str1 : string; Index : Integer, Count : Integer );

  • str1 – строка из которой удаляем символы.
  • Index – позиция с которой начинаем удалять.
  • Count – сколько символов удаляем

Процедура Insert()

Процедура Insert() – вставляет одну строку в другую, начиная с указанного символа.

procedure Insert(str2: String; var Str1: String; Index: Integer);

  • str2-страка, которую вставляем.
  • str1-строка, в которую вставляем.
  • Index – позиция, с которой начнется вставка

Эти основные функции помогут сделать со строками в delphi любые манипуляции.

Работа со строками Delphi. Длина строки, поиск строки и пр. Обучающий материал

Строка – последовательность символов. В стандартных приложениях строковый тип используется очень часто. Для того, чтобы можно было работать со строковыми значениями, следует использовать определенный строковый тип или массив.

Стоит отметить тот факт, что в Delphi есть возможность присваивать строковые значения массиву. Что касается строковых типов, то самым популярным является String. В зависимости от директивы $H, которая по умолчанию всегда включена, компилятор интерпретирует string по-разному.

Например, если включить директиву, то компилятор будет интерпретировать string в качестве типа AnsiString, который представляет собой длинную строку с нулевым символом на конце.

В противном случае, тип string будет представлен как ShortString, который является короткой строкой без нулевого символа в конце. Работа со строками в Delphi требует от программиста знания определенного перечня специальных функций.

Поиск строки Delphi

В языке реализована возможность осуществлять поиск строки Delphi в строке. Для этого используется функция AnsiPos, которая возвращает позицию в строке первого вхождения. В том случае, если строка не будет найдена, то функция вернет нулевой результат ”0”.

Существует еще ряд команд, которые позволяют совершать различные манипуляции со строками. Здесь можно отметить AnsiIndexStr. Данная функция проводит сравнение строки со списком строк. В качестве результат она возвращает соответствующий индекс. Команда AnsiMatchStr вернет ”истина” в том случае, если строка будет полностью соответствовать какой-нибудь строке из заданного списка.

Выполняя поиск строки Delphi иногда нужно узнать последнюю позицию совпадения указанных символов. Для этого используется функция LastDelimiter.

Стоит отметить, что поиск строки можно выполнить и при помощи команды StrScan.

Зная данные функции, работа со строками будет выполнена намного быстрее и легче.

Перенос строки Delphi

Есть возможность управлять форматированием строк. Например, здесь можно адаптировать перенос строки Delphi как под Unix, так и под Windows.

Помимо этого, осуществить перенос строки можно благодаря функции WrapText.

Длина строки Delphi

Для того, чтобы получить длину строки Delphi, следует воспользоваться функцией Length(). Записывается она следующим образом:

Благодаря данной функции очень упрощается работа со строками.

Строку в число

Delphi позволяет преобразовывать строку в число и число в строку. Самыми часто используемыми функциями в этом случае являются:

1. IntToStr,
2. StrToInt,
3. StrToFloat,
4. FloatToStr.

Стоит отметить тот факт, что иногда без данных функций просто невозможно обойтись. Они дают возможность не целочисленные и целочисленные переменные типа Double, Integer, Real, Byte и так далее преобразовать в текст и наоборот, строку в число.

Строку в дату

Для того, чтобы преобразовать строку в дату Delphi, следует воспользоваться функцией VarToDateTime(). Для работы с датами в Делфи очень часто используется функция StrToDate(), которая преобразовывает непосредственно числа.

Илон Маск рекомендует:  Атрибут scrolldelay в HTML

В последнее время помимо работы с Delphi, большой интерес вызывает администрирование linux.

How to get length of a dynamic array in Delphi? [closed]

Is there a function to determine length of a dynamic array in Delphi ?

closed as not a real question by Cosmin Prund, Ken White, Rudy Velthuis, RRUZ, NullUserException Jan 24 ’13 at 20:10

It’s difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. If this question can be reworded to fit the rules in the help center, please edit the question.

Иллюстрированный самоучитель по Delphi 7 для начинающих

Операции со строками. Функция length. Процедура delete.

В языке Delphi есть несколько полезных при работе со строками функций и процедур. Ниже приведено их краткое описание и примеры использования.

Функция length

Функция length возвращает длину строки. У этой функции один параметр – выражение строкового типа. Значением функции length (целое число) является количество символов, из которых состоит строка.

Например, в результате выполнения инструкций:

Значение переменных n и m будет равно 6 и 20.

Процедура delete

Процедура delete позволяет удалить часть строки. В общем виде обращение к этой процедуре выглядит так:

  • Строка – переменная или константа строкового типа;
  • р – номер символа, с которого начинается удаляемая подстрока;
  • п – длина удаляемой подстроки.

Например, в результате выполнения инструкций:

Значением переменной s будет строка ‘город Петербург’.

Работа со строковыми типами данных в Delphi

Строковый тип данных — один из самых часто используемых в программах тип. Действительно, без него не обходится практически ни один алгоритм. Даже программы, выполняющие исключительно математические операции, порой, написаны с использованием строковых типов данных.

Строка — это последовательность символов. В Object Pascal существует несколько строковых типов. Вот основные из них:

Для большинства целей подходит тип AnsiString (иногда называется Long String ).

Стандартные функции обработки строк:

1) Функция Length(Str: String) — возвращает длину строки (количество символов). Пример:

var
Str: String; L: Integer;
< . >
Str := ‘Hello!’ ;
L := Length(Str);


2) Функция SetLength(Str: String; NewLength: Integer) позволяет изменить длину строки. Если строка содержала большее количество символов, чем задано в функции, то «лишние» символы обрезаются. Пример:

var Str: String;
< . >
Str := ‘Hello, world!’ ;
SetLength(Str, 5);

3) Функция Pos(SubStr, Str: String) — возвращает позицию подстроки в строке. Нумерация символов начинается с единицы (1). В случае отсутствия подстроки в строке возращается 0. Пример:

var Str1, Str2: String; P: Integer;
< . >
Str1 := ‘Hi! How do you do?’ ;
Str2 := ‘do’ ;
P := Pos(Str2, Str1);

4) Функция Copy(Str: String; Start, Length: Integer) — возвращает часть строки Str, начиная с символа Start длиной Length. Ограничений на Length нет — если оно превышает количество символов от Start до конца строки, то строка будет скопирована до конца. Пример:

var Str1, Str2: String;
< . >
Str1 := ‘This is a test for Copy() function.’ ;
Str2 := Copy(Str1, 11, 4);

5) Процедура Delete(Str: String; Start, Length: Integer) — удаляет из строки Str символы, начиная с позиции Start длиной Length. Пример:

var Str1: String;
< . >
Str1 := ‘Hello, world!’ ;
Delete(Str1, 6, 7);

6) Функции UpperCase(Str: String) и LowerCase(Str: String) преобразуют строку соответственно в верхний и нижний регистры:

var Str1, Str2, Str3: String;
< . >
Str1 := ‘hELLo’ ;
Str2 := UpperCase(Str1); < Str2 = "HELLO" >
Str3 := LowerCase(Str1);

Строки можно сравнивать друг с другом стандартным способом:

var Str1, Str2, Str3: String; B1, B2: Boolean;
< . >
Str1 := ‘123’ ;
Str2 := ‘456’ ;
Str3 := ‘123’ ;
B1 := (Str1 = Str2); < B1 = False >
B2 := (Str1 = Str3);

Если строки полностью идентичны, логическое выражение станет равным True.

Дополнительные функции обработки строк:

В модуле StrUtils.pas содержатся полезные функции для обработки строковых переменных. Чтобы подключить этот модуль к программе, нужно добавить его имя ( StrUtils ) в раздел Uses .

1) PosEx(SubStr, Str: String; Offset: Integer) — функция аналогична функции Pos() , но позволяет задать отступ от начала строки для поиска. Если значение Offset задано (оно не является обязательным), то поиск начинается с символа Offset в строке. Если Offset больше длины строки Str, то функция возратит 0. Также 0 возвращается, если подстрока не найдена в строке. Пример:

uses StrUtils;
< . >
var Str1, Str2: String; P1, P2: Integer;
< . >
Str1 := ‘Hello! How do you do?’ ;
Str2 := ‘do’ ;
P1 := PosEx(Str2, Str1, 1); < P1 = 12 >
P2 := PosEx(Str2, Str1, 15);

2) Функция AnsiReplaceStr(Str, FromText, ToText: String) — производит замену выражения FromText на выражение ToText в строке Str. Поиск осуществляется с учётом регистра символов. Следует учитывать, что функция НЕ изменяет самой строки Str, а только возвращает строку с произведёнными заменами. Пример:

uses StrUtils;
< . >
var Str1, Str2, Str3, Str4: String;
< . >
Str1 := ‘ABCabcAaBbCc’ ;
Str2 := ‘abc’ ;
Str3 := ‘123’ ;
Str4 := AnsiReplaceStr(Str1, Str2, Str3);

3) Функция AnsiReplaceText(Str, FromText, ToText: String) — выполняет то же самое действие, что и AnsiReplaceStr(), но с одним исключением — замена производится без учёта регистра. Пример:

uses StrUtils;
< . >
var Str1, Str2, Str3, Str4: String;
< . >
Str1 := ‘ABCabcAaBbCc’ ;
Str2 := ‘abc’ ;
Str3 := ‘123’ ;
Str4 := AnsiReplaceText(Str1, Str2, Str3);

4) Функция DupeString(Str: String; Count: Integer) — возвращает строку, образовавшуюся из строки Str её копированием Count раз. Пример:

uses StrUtils;
< . >
var Str1, Str2: String;
< . >
Str1 := ‘123’ ;
Str2 := DupeString(Str1, 5);

5) Функции ReverseString(Str: String) и AnsiReverseString(Str: AnsiString) — инвертируют строку, т.е. располагают её символы в обратном порядке. Пример:

uses StrUtils;
< . >
var Str1: String;
< . >
Str1 := ‘0123456789’ ;
Str1 := ReverseString(Str1);

6) Функция IfThen(Value: Boolean; ATrue, AFalse: String) — возвращает строку ATrue, если Value = True и строку AFalse если Value = False. Параметр AFalse является необязательным — в случае его отсутствия возвращается пустая строка.

uses StrUtils;
< . >
var Str1, Str2: String;
< . >
Str1 := IfThen(True, ‘Yes’ ); < Str1 = "Yes" >
Str2 := IfThen(False, ‘Yes’ , ‘No’ );

Мы рассмотрели функции, позволяющие выполнять со строками практически любые манипуляции. Как правило, вместо строки с указанным типом данных, можно использовать и другой тип — всё воспринимается одинаково. Но иногда требуются преобразования. Например, многие методы компонент требуют параметр типа PChar , получить который можно из обычного типа String функцией PChar(Str: String) :

uses ShellAPI;
< . >
var FileName: String;
< . >
FileName := ‘C:\WINDOWS\notepad.exe’ ;
ShellExecute(0, ‘open’ , PChar(FileName), » , » , SW_SHOWNORMAL);

Тип Char представляет собой один-единственный символ. Работать с ним можно как и со строковым типом. Для работы с символами также существует несколько функций:

Chr(Code: Byte) — возвращает символ с указанным кодом (по стандарту ASCII):

Ord(X: Ordinal) — возвращает код указанного символа, т.е. выполняет противоположное действие функции Chr() :

var X: Integer;
< . >
X := Ord( ‘F’ );

Из строки можно получить любой её символ — следует рассматривать строку как массив. Например:

var Str, S: String; P: Char;
< . >
Str := ‘Hello!’ ;
S := Str[2]; < S = "e" >
P := Str[5];

В этой статье описаны основные приёмы работы со строковыми типами данных. Как правило, этих данных достаточно для написания любого алгоритма.

Ссылки по теме

Популярные статьи
Илон Маск рекомендует:  Безопасное программирование на PHP
Информационная безопасность Microsoft Офисное ПО Антивирусное ПО и защита от спама Eset Software


Бестселлеры
Курсы обучения «Atlassian JIRA — система управления проектами и задачами на предприятии»
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год. Электронный ключ
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2020. Все языки. Электронный ключ
Курс «Oracle. Программирование на SQL и PL/SQL»
Курс «Основы TOGAF® 9»
Microsoft Windows Professional 10 Sngl OLP 1 License No Level Legalization GetGenuine wCOA (FQC-09481)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Windows Server 2020 Standard
Курс «Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации»
Антивирус ESET NOD32 Antivirus Business Edition
Corel CorelDRAW Home & Student Suite X8

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

Length — Функция Delphi

В этом уроке мы более подробно разберем различные методы работы со строками. Научимся производить простые операции копирования, поиска, вставки и т.п.
В прошлом уроке мы рассмотрели достаточно полезные функции преобразования чисел в строки и наоборот. Теперь давайте рассмотрим несколько функций работы непосредственно с самими строками.

Сложение строк реализуется практически как и сложение обыкновенных чисел следующим образом:
[cc lang=»delphi»]var
a,b,c:string;
begin
b := ‘Cybern.ru’;
c := ‘ is a best website’;
a := b + c;
// в результате строка a будет выглядеть так: «Cybern.ru is a best website»
end;[/cc]

Получение длины строки в Delphi реализуется при помощи функции Length, которая возвращает в качестве результата целочисленное число.
[cc lang=»delphi»]var
a:string;
count:integer;
begin
a := ‘Cybern.ru’; // 9 символов
count := Length(a);
// в результате переменная count будет равна 9
end;[/cc]

В любой строке можно получать доступ к каждому ее символу. Таким образом, можно рассматривать строку как одномерный массив символов, т.е. можно обращаться к каждому символу по его индексу. Важно учесть, что индексы в строках типа String нумеруются не с 0, а c 1, т.е. индекс первого символа равен 1, а индекс последнего символа равен Length(s) (длине этой строки).
[cc lang=»delphi»]var
a, b:string;
c: char;
begin
a := ‘Cybern.ru’; // 9 символов
b := a[3]; // символ ‘b’
c := a[3]; // можно использовать тип Char, который хранит в себе не более 1 символа
c := a[length(a)]; // получение последнего символа ‘u’
end;[/cc]

[cc lang=»delphi»]var
a, b:string;
begin
a := ‘CyberN.RU’;
b := LowerCase(a); // строка b будет равна ‘cybern.ru’
b := UpperCase(a); // строка b будет равна ‘CYBERN.RU’
end;[/cc]

Для поиска позиции определенной подстроки в строке используется функция Pos, возвращающая в результате своего вхождения начальный индекс этого вхождения в строке. Этой функции необходимо передать два параметра: подстроку, которую ищем, и строку, в которой производим поиск. Рассмотрим простой пример.
[cc lang=»delphi»]var
a, b:string;
с: integer;
begin
a := ‘CyberN.RU is the best website about programming’;
b := ‘website’;
c := pos(b, a); // c = 23
end;[/cc]
Также существует еще одна аналогия функции pos, но имеющая немного больше возможностей — PosEx. Она позволяет производить поиск подстроки начиная с определенного индекса в строке. Но для работы с этой функцией необходимо добавить в раздел uses модуль StrUtils.
[cc lang=»delphi»]var
a, b:string;
с: integer;
begin
a := ‘123abc123123123’;
b := ‘123’;
c := PosEx(b, a, 4); // c = 7
end;[/cc]
Как видите, преимущество PosEx заключается в том, что при поиске можно игнорировать определенные вхождения до указанного индекса. Это бывает очень удобно.

Функция Insert позволяет вставить подстроку внутрь исходной строки, начиная с указанного индекса. При этом вставка происходит со сдвигом последующих символов вправо на длину вставляемой подстроки.
[cc lang=»delphi»]var
a, b:string;
begin
a := ‘CyberN.RU is the website about programming’;
b := ‘best ‘;
Insert(a, b, 13); // a = «CyberN.RU is the best website about programming»
end;[/cc]

Процедура Delete позволяет удалить из строки указанное количество символов, начиная с указанного индекса в строке. При этом удаление происходит со сдвигом последующих символов на длину удаляемой подстроки влево.
[cc lang=»delphi»]var
a:string;
begin
a := ‘123123abc123123’;
Delete(a, 7, 3); // a = «123123123123»
end;[/cc]

Функция Copy позволяет получить дубликат подстроки определенной длинны, начинающейся с символа с указанным индексом.
[cc lang=»delphi»]var
a, b:string;
begin
a := ‘cybern.ru is the best website about programming’;
b := Copy(a, 1, 9); // b = «cybern.ru»
end;[/cc]

Для замены одной подстроки на другую подстроку внутри исходной строки используют функцию StringReplace. Нужно признать, что функция довольно удобная и обойти стороной ее никак нельзя. Довольно полезной возможностью этой функции является то, что она может заменять сразу несколько вхождений одной подстроки на другую, а также может игнорировать регистр. Последние две возможности являются опциональными (необязательными) и при необходимости их можно не использовать. Рассмотрим пример:
[cc lang=»delphi»]var
a, b, c: string;
begin
a := ‘aBc Abc abC 123 cba cba cba’; // исходная строка
b := ‘abc’; // заменяемая подстрока
c := ‘test’; // заменяющая подстрока
// Далее параметр [rfReplaceAll,rfIgnoreCase] обозначают как раз те самые опции в работе функции.
// Называются такие параметры «флагами».
// Такие флаги обязательно нужно указывать внутри квадратных скобок.
// Сами флаги перечисляются через запятую.
// Все флаги, находящиеся внутри квадратных скобок являются обычным параметром функции.
// Флаг rfReplaceAll говорит функции, что нужно будет производить замену всех вхождений.
// Если этот флаг убрать (тогда выглядеть флаги будут так «[rfIgnoreCase]»),
// то заменится только первое вхождение в строке a.
// Флаг rfIgnoreCase указывает, что при поиске вхождений строк b регистр учитываться не будет.
// Если все флаги вам не нужны, то это НЕ значит, что параметр вовсе не нужно указывать.
// В таком случае укажите в качестве флагов «[]».
a := StringReplace(a,b,c, [rfReplaceAll,rfIgnoreCase]);
// В результате строка a будет содержать «test test test 123 cba cba cba»
end;[/cc]
[note]Если вы не помните какие флаги есть у функции, то лучше укажите сначала «[«, а затем нажмите «Ctrl+Пробел», после чего откроется список с подсказками, в котором будут перечислены все возможные флаги. [/note]

Регулярные выражения позволяют осуществлять очень широкий спектр различных возможностей, связанный с поиском, выбором и анализом строки. Подробнее о регулярных выражениях вы можете прочитать тут.

Delphi in a Nutshell by Ray Lischner

Stay ahead with the world’s most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to v > Start Free Trial

No credit card required

Syntax

Description

Length returns the number of elements in a string or array. It is not a real function.

Tips and Tricks

Although Length is most often used to learn the length of a dynamic array, you can also call Length to find the length of an open array parameter or even a static array.

For an array, Length(A) always returns Ord(High(A)) — Ord(Low(A)) + 1 . For a ShortString , however, Length returns the value stored in the length byte, which might be shorter than the string size.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL