====== Всё о строках ======
FIXME Статья не окончена. Помогите дополнить её.
===== Введение =====
==== Типы строк ====
* Cтроки (тип String) длиной до 255 символов.
* Строки с завершающим нулём (Null-terminated/ASCIIZ strings), длиной до 65535 (216-1) символов. Описывается как ''Array Of Char''.
==== Операции над строками ====
[[string system procedures|Справка по процедурам и функциям операций над строками]]
===== Анализ и обработка текста =====
==== Различные частоупотребляемые функции ====
=== Проверка, являются ли все буквы в слове русскими/латинскими ===
Type
TCharset = Set Of Char;
Const
CyrillicCharset : set of char = ['А'..'Я','а'..'п','р'..'я'];
LatinCharset : set of char = ['A'..'Z','a'..'z'];
function CheckAlphabet (Str: string; Charset: TCharset): boolean;
var
i: integer;
begin
i := 1;
While (i <= Length (Str)) And (Str[i] In Charset) Do
Inc (i);
If i > Length (Str) Then
CheckAlphabet := TRUE
Else
CheckAlphabet := FALSE
end;
var
S: string;
begin
readln (S);
WriteLn (CheckAlphabet(S,LatinCharset))
end.
=== Перекодировка ===
=== Сумма Прописью ===
==== Анализ текста и извлечение информации ====
=== Поиск и сравнение строк по шаблону ===
=== Извлечение слов из строки ===
Некоторый набор символов считается словом, если он состоит из символов алфавита (латинского или, допустим, кириллицы) и знака дефис.
=== Подсчёт слов в строке ===
Type
TCharset = Set Of Char;
Const
CyrillicCharset : set of char = ['А'..'Я','а'..'п','р'..'я'];
LatinCharset : set of char = ['A'..'Z','a'..'z'];
function WordCount (S: string; Charset: TCharset): integer;
var
i, len, words: integer;
PrevIsAlpha: boolean; { признак того, что предыдущий символ принадлежит набору алфавита }
begin
words := 0;
PrevIsAlpha := FALSE;
len := 0;
for i := 1 to Length(S) do
if NOT (S[i] in Charset) then { Если i-й символ строки НЕ принадлежит алфавиту (достигли конца слова) }
begin
if PrevIsAlpha AND (len>1) then { а предыдущий также принадлежит алфавиту и длина слова более 1 символа }
inc (words);
len := 0;
PrevIsAlpha := FALSE
end
else
begin
inc (len);
PrevIsAlpha := TRUE
end;
WordCount := words
end;
Использовать функцию так:
writeln (WordCount ('function WordCount (S: string; Charset: TCharset): integer;', LatinCharset))
=== Разделение строки на подстроки по заданному разделителю ===
=== Определение частоты вхождений символа/подстроки ===
count := 0; { обнулить счётчик }
for i := 1 to Length (str) do
if str[i] = ch {символ} then
inc (count); {count := count + 1 увеличить счётчик}
==== Поиск с учётом морфологии слов ====
==== Регулярные выражения (regex, Regular Expressions) ====
[[wpru>Регулярные выражения]] помогают в сложных и простых случаях, когда необходимо найти или заменить вхождения символов по заданномуу шаблону. Применяя их, нет необходимости в сложных алгоритмах разбора строк на составные части, что значительно облегчает написание кода в программах.
===== Внешние ссылки =====
[[http://www.sources.ru/pascal/string/index.htm|Строковые Функции]]
[[http://www.sources.ru/pascal/parsing/index.htm|Разбор и Анализ Строк]]