UTF8 Tools/ru

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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;

Загрузка

Download utf8tools.zip