Главная | Регистрация | Вход
Среда, 06.08.2025, 15:05
Приветствую Вас Гость | RSS
Навигация:
Категории:
Базы данных [9]
Графика и Игры [0]
Интернет и Сети [0]
Компоненты и Классы [0]
Мультимедиа [0]
ОС и Железо [0]
Программа и Интерфейс [0]
Технологии [0]
Файловая система [0]
Программирование на Delphi [23]
Обучающие статьи [26]
Небольшие уроки по Delphi
Синтаксис [0]
Рабочий стол [0]
qwerty [0]
Чат сайта:
Главная » Статьи » Обучающие статьи

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

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

1) Функция Length(Str: String) - возвращает длину строки (количество символов). Пример:var 
  Str: String; L: Integer; 
{ ... } 
Str:='Hello!'; 
L:=Length(Str); { L = 6 }

2) Функция SetLength(Str: String; NewLength: Integer) позволяет изменить длину строки. Если строка содержала большее количество символов, чем задано в функции, то "лишние" символы обрезаются. Пример:
var Str: String; 
{ ... } 
Str:='Hello, world!'; 
SetLength(Str, 5); { Str = "Hello" }

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); { P = 9 }

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); { Str2 = "test" }

5) Процедура Delete(Str: String; Start, Length: Integer) - удаляет из строки Str символы, начиная с позиции Start длиной Length. Пример:
var Str1: String; 
{ ... } 
Str1:='Hello, world!'; 
Delete(Str1, 6, 7); { Str1 = "Hello!" }

6) Функции UpperCase(Str: String) и LowerCase(Str: String) преобразуют строку соответственно в верхний и нижний регистры:
var Str1, Str2, Str3: String; 
{ ... } 
Str1:='hELLo'; 
Str2:=UpperCase(Str1); { Str2 = "HELLO" } 
Str3:=LowerCase(Str1); { Str3 = "hello" }

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

var Str1, Str2, Str3: String; B1, B2: Boolean; 
{ ... } 
Str1:='123'; 
Str2:='456'; 
Str3:='123'; 
B1:=(Str1 = Str2); { B1 = False } 
B2:=(Str1 = Str3); { B2 = True }

Если строки полностью идентичны, логическое выражение станет равным 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); { P2 = 19 }

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); { Str4 = "ABC123AaBbCc" }

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); { Str4 = "123123AaBbCc" }

4) Функция DupeString(Str: String; Count: Integer) - возвращает строку, образовавшуюся из строки Str её копированием Count раз. Пример: 
uses StrUtils; 
{ ... } 
var Str1, Str2: String; 
{ ... } 
Str1:='123'; 
Str2:=DupeString(Str1, 5); { Str2 = "123123123123123" }

5) Функции ReverseString(Str: String) и AnsiReverseString(Str: AnsiString) - инвертируют строку, т.е. располагают её символы в обратном порядке. Пример: 
uses StrUtils; 
{ ... } 
var Str1: String; 
{ ... } 
Str1:='0123456789'; 
Str1:=ReverseString(Str1); { Str1 = "9876543210" }

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'); { Str2 = "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):
var A: Char; 
{ ... } 
A:=Chr(69); { A = "E" }

Ord(X: Ordinal) - возвращает код указанного символа, т.е. выполняет противоположное действие функции Chr():
var X: Integer; 
{ ... } 
X:=Ord('F'); { X = 70 }

Из строки можно получить любой её символ - следует рассматривать строку как массив. Например:
var Str, S: String; P: Char; 
{ ... } 
Str:='Hello!'; 
S:=Str[2]; { S = "e" } 
P:=Str[5]; { P = "o" }

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


Категория: Обучающие статьи | Добавил: NekitoS (20.04.2009)
Просмотров: 961 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Контакты
ICQ:306182
Статистика
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright "Delphi Project Ltd" © 2025