Модул:Ustring/doc
This is the documentation page for Модул:Ustring
Этот модуль оценён как бета-версия. Он готов для широкого применения, но должен применяться с осторожностью. |
Этот модуль предоставляет класс для работы со строками в кодировке Юникод так же просто, как с обычными строками. Он используется в других модулях, не в функции #invoke.
Пример использования
вироишlocal u = require('Module:Ustring')
local s = u.new('Хорошо живёт на свете %s!')
print(s:format('Винни-Пух')) --результат: Хорошо живёт на свете Винни-Пух!
print(s:format('Винни-Пух'):len()) --результат: 32
Конструктор new
вироишlocal s = u.new( str )
Создаёт объект строки, идентичной строке str, но с другим набором методов.
Поля
вироишstring
вироишСодержит исходную строку типа string.
new
вироишСодержит конструктор, который применяется к строкам в результатах других функций. По умолчанию это конструктор new.
Обзор методов
вироишНаследуются все методы из стандартной библиотеки ustring, при этом к каждой строке в результатах применяется self.new. Метод gmatch переопределён так, что применяет конструктор ко всем результатам итератора; метод gcodepoint не переопределён и итерирует по точкам Unicode, которые возвращаются в цикл как значения типа string (если надо применять конструктор, используйте s:gmatch(".")
).
Перегруженные операторы
вироишКонкатенация ..
вироишОбъекты могут складываться между собой и с обычными строками, результат всегда объект.
Сравнение
вироишСравнивать можно только объекты между собой. Для сравнения применяется функция u.strcmp
, где u — объект, возвращённый require. Если переопределить эту функцию в этом объекте, все объекты ustring будут сравниваться иначе.
Индексация
вироишВызов объекта с числовым ключом возвращает символ с данным номером (типа string):
print( (u.new('Привет!'))[7] ) -- результат: "!"
Ограничения
вироишПока что метаметод __len
не поддерживается Lua, поэтому вместо оператора #s
надо писать s:len()
.