UTF8 Tools/ru: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: UTF8 Tools/ru
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## О пакете | |
| 2 | + | ||
| 3 | + | Этот код позволяет обрабатывать текст Unicode и определять, \[является ли\] символ Unicode: | |
| 4 | + | ||
| 5 | + | - символом "letter"(буквой) | |
| 6 | + | - символом "digit"(число) | |
| 7 | + | - upper-case (заглавным), lower-case (прописным) символом | |
| 8 | + | - символом "white space"(пробела) | |
| 9 | + | - символом "punctuation"(пунктуации, напр. точкой, двоеточием и т.д.) | |
| 10 | + | - и т.д. | |
| 11 | + | ||
| 12 | + | Также у него есть класс для чтения/записи Unicode из/в TStream (поток в памяти). | |
| 13 | + | ||
| 14 | + | # Модули | |
| 15 | + | ||
| 16 | + | ## Использование потоков | |
| 17 | + | ||
| 18 | + | Модуль "charencstreams": загружает/сохраняет данные практически из/в любого текстового источника: | |
| 19 | + | ||
| 20 | + | - ANSI, UTF8, UTF16, UTF32 | |
| 21 | + | - big-endian, little-endian | |
| 22 | + | - с/без BOM | |
| 23 | + | ||
| 24 | + | Демо: | |
| 25 | + | ||
| 26 | + | ``` pascal | |
| 27 | + | f := TCharEncStream.Create; | |
| 28 | + | f.LoadFromFile(OpenDialog1.FileName); | |
| 29 | + | Memo1.Text := f.UTF8Text; | |
| 30 | + | f.Free; | |
| 31 | + | ``` | |
| 32 | + | ||
| 33 | + | ## Информация о символе | |
| 34 | + | ||
| 35 | + | Unit "character": get information about code points using the TCharacter class. Demo: Модуль "character": получает информацию о кодовых точках, используя класс TCharacter. Демо: | |
| 36 | + | ||
| 37 | + | ``` pascal | |
| 38 | + | if TCharacter.IsLetter(s[i]) then | |
| 39 | + | s[i] := TCharacter.toLower(s[i]); | |
| 40 | + | ``` | |
| 41 | + | ||
| 42 | + | ## Доступ к UTF-8 по индексу кода | |
| 43 | + | ||
| 44 | + | Модуль "utf8scanner": \[осуществляет\] доступ к строкам UTF-8 по индексу кода, использует операторы case в строках UTF-8 и многое другое. Демо: | |
| 45 | + | ||
| 46 | + | ``` pascal | |
| 47 | + | s := TUTF8Scanner.Create(Memo1.Text); | |
| 48 | + | for i := 1 to s.Length do | |
| 49 | + | if TCharacter.IsLetter(s[i]) then | |
| 50 | + | s[i] := TCharacter.toLower(s[i]); | |
| 51 | + | Memo1.Text := s.UTF8String; | |
| 52 | + | s.Free; | |
| 53 | + | ``` | |
| 54 | + | ||
| 55 | + | Демо с оператором case: | |
| 56 | + | ||
| 57 | + | ``` pascal | |
| 58 | + | s := TUTF8Scanner.Create(Memo1.Text); | |
| 59 | + | s.FindChars := 'öäü'; | |
| 60 | + | repeat | |
| 61 | + | case s.FindIndex(s.Next) of | |
| 62 | + | {ö} 0: s.Replace('oe'); | |
| 63 | + | {ä} 1: s.Replace('ae'); | |
| 64 | + | {ü} 2: s.Replace('ue'); | |
| 65 | + | end; | |
| 66 | + | until s.Done; | |
| 67 | + | Memo1.Text := s.UTF8String; | |
| 68 | + | s.Free; | |
| 69 | + | ``` | |
| 70 | + | ||
| 71 | + | # Загрузка | |
| 72 | + | ||
| 73 | + | [Download utf8tools.zip](http://www.theo.ch/lazarus/utf8tools.zip) | |
| 74 | + | ||
| 75 | + | --- | |
| 76 | + | *From the Free Pascal wiki, page "UTF8 Tools/ru", as it stood on 2019-01-17 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 77 | + | Category: Unicode |
