Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Функции обработки строк типа AnsiString

Лабораторная работа № 2 | Лабораторная работа№ 3 | Лабораторная работа№ 4 | Int j1,j2,j3,j4; | Сортировка методом прямого выбора | Лаборатоная работа № 6 | Теоретические сведения | Сведения о гражданине ind1 | Лабораторная работа № 9 | Лабораторная работа № 10 |


Читайте также:
  1. AЧX и ФЧХ передаточной функции цепи.
  2. II. Функции школьной формы
  3. Self и его функции.
  4. Бегущая строка
  5. В то же время, старение тела - это прогрессирую­щий ожог химическими веществами, который приводит к повреждению желез и нарушению их функций, вплоть до их полой дисфункции.
  6. Верховный тайный совет, его функции и деятельность
  7. Виды аптечных учреждений. Задачи и функции аптечных организаций.

 

Функция Синтаксис / Описание Файл
AdjustLineBreaks System::AnsiString AdjustLineBreaks(const System::AnsiString S) Заменяет в S символы конца строки на CR/LF -стандартные для Unix SysUtils.hpp
AnsiCompareStr int AnsiCompareStr(const System::AnsiString SI, const System::AnsiString S2) Сравнивает строки 81и S2 с учетом регистра; результат < 0 при Sl< S2, = 0 при Sl= S2, > 0 при Sl> S2 SysUtils.hpp
AnsiCompareText int AnsiCompareText (const System::AnsiString SI, const System::AnsiString S2) Сравнивает строки 81и S2 без учета регистра; результат < 0 при Sl< S2, = 0 при Sl= S2, > 0 при Sl> S2 SysUtils.hpp
AnsiExtractQuotedStr System::AnsiString AnsiExtractQuotedStr(char * &Src, char Quote) Возвращает строку Src с удаленными из ее начала и конца символами кавычек, заданными как Quote, и с заменой внутри двойных кавычек на одинарные SysUtils.hpp
AnsiLowerCase System::AnsiString AnsiLowerCase(const System::AnsiString S) Возвращает строку S, приведенную к нижнему регистру (работает с кириллицей) SysUtils.hpp
AnsiPos int AnsiPos(const System::AnsiString Substr, const System::AnsiString S) Возвращает позицию начала подстроки Substr в S или 0 SysUtils.hpp
AnsiQuotedStr System::AnsiString AnsiQuotedStr(const System::AnsiString S, char Quote) Возвращает строку S со вставленными в ее начало и конец символами кавычек, заданными как Quote, и с заменой внутри строки одинарных кавычек на двойные SysUtils.hpp
AnsiUpperCase System::AnsiString AnsiUpperCase(const System::AnsiString S) Возвращает строку S, приведенную к верхнему регистру (работает с кириллицей) SysUtils.hpp
IsDelimiter bool IsDelimiter(const System::AnsiString Delimiters, const System::AnsiString S, int Index) Определяет, является ли символ с индексом Index в строке S одним из разделителей, указанных в строке Delimiters SysUtils.hpp
IsPathDelimiter bool IsPathDelimiter(const System::AnsiString S, int Index); Определяет, является ли символ с индексом Index в строке S обратным слэшем '\', используемым для задания путей к файлам SysUtils.hpp
LastDelimiter int LastDelimiter(const System::AnsiString Delimiters, const System::AnsiString S) Возвращает индекс последнего вхождения в строку S одного из разделителей, указанных в строке Delimiters SysUtils.hpp
LowerCase System::AnsiString LowerCase(const System::AnsiString S) Возвращает строку S, приведенную к нижнему регистру (для кириллицы используйте AnsiLowerCase) SysUtils.hpp
QuotedStr System::AnsiString QuotedStr(const System::AnsiString S) Возвращает строку S со вставленными в ее начало и конец символами одинарных кавычек и с заменой внутри строки одинарных кавычек на двойные (для многобайтных символов используйте AnsiQuotedStr) SysUtils.hpp
StringReplace System::AnsiString StringReplace(const System::AnsiString S,const System::AnsiString OldPattern, const System::AnsiString NewPattern, TReplaceFlags Flags)Возвращает строку S с заменой подстроки OldPattern на NewPattern; Flags управляет заменами подстрок SysUtils.hpp
Trim System::AnsiString Trim(const System::AnsiString S) Возвращает строку S с удаленными начальными и конечными пробельными и управляющими символами SysUtils.hpp
TrimLeft System::AnsiString TrimLeft(const System::AnsiString S) Возвращает строку S с удаленными начальными пробельными и управляющими символами SysUtils.hpp
TrimRight System::AnsiString TrimRight(const System::AnsiString S) Возвращает строку S с удаленными конечными про­бельными и управляющими символами SysUtils.hpp
UpperCase System::AnsiString UpperCase(const System::AnsiString S) Возвращает строку S, приведенную к верхнему регистру (для кириллицы используйте AnsiUpperCase) SysUtils.hpp
WrapText System::AnsiString WrapText const System::AnsiString Line, const System::AnsiString BreakStr, const TSysCharSet &BreakChars, int MaxCoI) Возвращает текст Line, разбитый на строки длиной до MaxCol вставкой символов BreakStr и заменой на них символов множества BreakChars SysUtils.hpp

Комментарии

Все функции, оперирующие со строками типа AnsiString, учитывают локали­зацию и поэтому могут с равным успехом работать как для латинских букв, так и для кириллицы. В этом их большое преимущество перед многими функциями, ра­ботающими со строками типа char *.

Несколько замечаний о приведенных в таблице функциях. В функциях IsDelimiter и IsPathDelimiter индексы отсчитываются от 1 (вопреки утверждени­ям встроенной справки C++Builder). Соответственно 1 — это первый символ стро­ки, 2 — второй и т.д.

Функция IsDelimiter удобна для просмотра всех символов строки и замены каких-то одних символов на другие. Например, код

AnsiString S, Delimiters;

Delimiters = "'";

S =...;

for(int i = 1; i <= StrLen(S.c_str()); i++)

if(IsDelimiter(Delimiters,S,i)) S[i] = "";

заменит в строке S все символы одинарных кавычек на двойные кавычки.

В этой функции в строке Delimiters не обязательно должны быть именно раз­делители. В нее могут быть занесены любые символы. Например, если приведен­ный код изменить следующим образом:

AnsiString S, Delimiters; Delimiters = "123456789"; S =...;

for(int i = 1; i <= StrLen(S.c_str()); i++) if(IsDelimiter(Delimiters,S,i)) S[i] -= 1;

то все символы цифр в строке, кроме 0, будут уменьшены на 1.

Функция StringReplace возвращает строку S с заменой подстроки OldPattern на NewPattern. Если параметр Flags не включает флаг rfReplaceAll, то функция заменят только первое вхождение подстроки OldPattern. Если параметр Flags включает флаг rfIgnoreCase, то операции выполняются без учета регистра. Напри­мер, оператор

S1 = StringReplace(S, OldPattern, NewPattern,

TReplaceFlags () «rfReplaceAll);

поместит в строку S1 текст строки S с заменой в ней всех подстрок OldPattern на NewPattern.

Функция WrapText разбивает заданный текст Line на строки. В качестве сим­волов конца строки используются символы, заданные параметром BreakStr. Пара­метр MaxCol задает максимальное количество символов в строке. Разбиение на строки производится вставкой BreakStr после одного из символов, имеющихся в множестве BreakChars. Вставка производится после того из символов в текущей строке, который обеспечивает ее максимальную длину в пределах MaxCol. Если ни одного символа из BreakChars не встретилось, длина строки может превысить MaxCol. Например, операторы

TSysCharSet bchars;

bchars «' ' «'.' «',' «';' «'+' «'-';

AnsiString S, S1;

S =...;

S1 = WrapText(S, "\n\r", bchars, 10);

обеспечивают запись в S1 текста S, разбитого на строки длиной до 10 символов, причем разбиение проводится после пробелов и знаков пунктуации. Если в S запи­сать текст: «Этот тест показывает разбиение на строки, в частности — на символах + и —.», то результат будет следующим:

"Этот тест " "показывает " "разбиение "

"на строки," и в ••

"частности " "- на " "символах +" " и -. "

Можно заметить, что вторая строка содержит 11 символов, включая пробел, т.е. ее размер больше заданного.

Конечно, в этом примере указана очень маленькая длина строки и поэтому разбиение выглядит не красиво. При нормальной для печати длине строк разбие­ние получается лучше.

 

Пример 2.1. Дана строка символов (считывается с Edit1). Группа символов между пробелами считается словом.

Рисунок-28. Исходная форма

1.Подсчитать количество слов в строке.

Из условия понятно, что задачу можно решить, перебирая строку посимвольно. Сравнивая каждый символ с пробелом, можно подсчитать их количество. Количество слов будет на одно больше. Например, строка «МАМА МЫЛА РАМУ» содержит два пробела и три слова. Программу можно записать так:

for (i=1;i<=StrLen(st.c_str());i++)

if (IsDelimiter(del,st,i)) k++;

Edit3->Text=IntToStr(k+1);

2.Определить, длину строки

i=st.Length(); // или i=StrLen(st.c_str());

Edit4->Text=IntToStr(i);}

3.Сколько раз в тексте встречается подстрока S2.

s2=Edit2->Text;

i=st.AnsiPos(s2);

while (i)

{ k++;

n+= i+s2.Length();

i=st.SubString(n,255).Pos(s2); }

Edit5->Text=IntToStr(k);


Дата добавления: 2015-11-04; просмотров: 161 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Лабораторная работа № 7| Лаборатоная работа № 8

mybiblioteka.su - 2015-2024 год. (0.011 сек.)