UTF8 Tools/ru
From Free Pascal wiki
Jump to navigationJump to search
│ English (en) │ русский (ru) │
О пакете
Этот код позволяет обрабатывать текст Unicode и определять, [является ли] символ Unicode:
- символом "letter"(буквой)
- символом "digit"(число)
- upper-case (заглавным), lower-case (прописным) символом
- символом "white space"(пробела)
- символом "punctuation"(пунктуации, напр. точкой, двоеточием и т.д.)
- и т.д.
Также у него есть класс для чтения/записи Unicode из/в TStream (поток в памяти).
Модули
Использование потоков
Модуль "charencstreams": загружает/сохраняет данные практически из/в любого текстового источника:
- ANSI, UTF8, UTF16, UTF32
- big-endian, little-endian
- с/без BOM
Демо:
f := TCharEncStream.Create;
f.LoadFromFile(OpenDialog1.FileName);
Memo1.Text := f.UTF8Text;
f.Free;
Информация о символе
Unit "character": get information about code points using the TCharacter class. Demo: Модуль "character": получает информацию о кодовых точках, используя класс TCharacter. Демо:
if TCharacter.IsLetter(s[i]) then
s[i] := TCharacter.toLower(s[i]);
Доступ к UTF-8 по индексу кода
Модуль "utf8scanner": [осуществляет] доступ к строкам UTF-8 по индексу кода, использует операторы case в строках UTF-8 и многое другое. Демо:
s := TUTF8Scanner.Create(Memo1.Text);
for i := 1 to s.Length do
if TCharacter.IsLetter(s[i]) then
s[i] := TCharacter.toLower(s[i]);
Memo1.Text := s.UTF8String;
s.Free;
Демо с оператором case:
s := TUTF8Scanner.Create(Memo1.Text);
s.FindChars := 'öäü';
repeat
case s.FindIndex(s.Next) of
{ö} 0: s.Replace('oe');
{ä} 1: s.Replace('ae');
{ü} 2: s.Replace('ue');
end;
until s.Done;
Memo1.Text := s.UTF8String;
s.Free;