Модуль: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().