Модуль:Ustring/doc
Это страница документации Модуль: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()
.