Jump to content

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

Содержит конструктор, который применяется к строкам в результатах других функций. По умолчанию это конструктор 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().