🦊 FoxWiki

Строки

Строка — это последовательность символов. Имена игроков, команды, названия блоков, сообщения об ошибках, содержимое файлов — всё это строки. В Lua строки — полноценный тип данных с богатой библиотекой функций.


Создание строк

Строки можно задавать тремя способами:

Редактор Lua
1
2
3
4
5
6

Внутри строки с двойными кавычками можно использовать одинарные и наоборот — это удобно когда нужны кавычки в тексте:

Редактор Lua
1
2

Иначе используй экранирование:

Редактор Lua
1

Базовые операции

Длина строки:

Редактор Lua
1
2
3
4
5

Склейка (конкатенация):

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11

Библиотека string

Все функции доступны двумя способами — через string.func(s) или как метод s:func():

Редактор Lua
1
2
3
4
5

Регистр

Редактор Lua
1
2
3

Длина

Редактор Lua
1
2

Извлечение подстроки

string.sub(s, i, j) — возвращает часть строки с позиции i до j. Отрицательные индексы считаются с конца:

Редактор Lua
1
2
3
4
5

Поиск

string.find(s, pattern) — возвращает начало и конец первого совпадения:

Редактор Lua
1
2
3
4
5
6
7
8

Извлечение по шаблону

string.match(s, pattern) — возвращает совпавшую часть:

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12

Основные символы шаблонов в Lua:

ШаблонЗначение
%dЦифра
%aБуква
%sПробельный символ
%lСтрочная буква
%uЗаглавная буква
.Любой символ
+Один или более
*Ноль или более
?Ноль или один
^Начало строки
$Конец строки

Замена

string.gsub(s, pattern, replacement) — заменяет все совпадения:

Редактор Lua
1
2
3
4
5
6
7
8
9
10

Повтор и переворот

Редактор Lua
1
2
3

Форматирование: string.format

string.format работает как printf в C — форматная строка с плейсхолдерами:

Редактор Lua
1
2
3
4
5
6
7
8

Основные спецификаторы:

СпецификаторЗначение
%sСтрока
%dЦелое число
%fДробное число
%.2fДробное с 2 знаками после запятой
%5dЧисло шириной 5 символов (правое выравнивание)
%-10sСтрока шириной 10 (левое выравнивание)
%02dЧисло с ведущими нулями: 07
%%Символ процента
Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Преобразование типов

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Практика: разбор названия блока

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

🚀 Задания

Задание 1 Напиши функцию capitalize(s), которая делает первую букву заглавной, остальные — строчными. Проверь на "hELLO wORLD".

Задание 2 Напиши функцию countWords(s), которая считает количество слов в строке (слова разделены пробелами). Используй string.gsub или string.gmatch.

Задание 3 Напиши функцию truncate(s, maxLen): если строка длиннее maxLen — обрежь и добавь "...". Иначе — вернуть как есть.

Задание 4 Напиши форматтер инвентаря: для каждого непустого слота (1–16) выводи строку вида "[01] minecraft:diamond x 07" с фиксированной шириной колонок через string.format.

Задание 5 Напиши парсер конфигурации: строка вида "key=value". Функция parseConfig(line) должна вернуть ключ и значение. Обработай случай когда строка не содержит = — вернуть nil, "Некорректный формат".

НазадРедстоун
ДалееТаблицы