Итоги
В этом уроке вы узнали, что:
- Текст — это строка. Её функции лежат в таблице
string, и вызывают их обычно как методы, с двоеточием:crop:upper()— короткая записьstring.upper(crop). Строка, записанная в коде, требует скобок:("="):rep(10). - Строковые функции никогда не меняют строку; они возвращают новую, которую нужно сохранить или использовать:
crop = crop:upper(). upperиlowerменяют регистр букв,len(или#) возвращает длину,repповторяет строку, аreverseпереворачивает её.s:sub(i, j)возвращает часть от позицииiдоj, обе включаются; безj— до конца. Отрицательные позиции отсчитываются с конца:s:sub(-3)— последние три символа.s:find(text, 1, true)возвращает позиции, где текст начинается и заканчивается, илиnil. Без1, trueтекст считается шаблоном.("%-10s %6.2f"):format(name, kg)дополняет значения до ширины: с минусом значение прижимается влево, без него — вправо.%%— знак процента.- Строки — это байты, а русская буква занимает два.
#,subи ширина считают байты,upperиlowerменяют только a–z, аutf8.lenсчитает символы. Дополняйте так:(" "):rep(width - utf8.len(text)). - В шаблонах есть классы
%d,%a,%w,%s(заглавные буквы означают противоположное) и.для любого символа; наборы вроде[^,];+,*и-для повторения;^и$для начала и конца; и%перед магическим символом.%aне знает русских букв. matchвозвращает первое совпадение, или его захваты в скобках (всегда строки), илиnil.gmatchпроходит по всем совпадениям в циклеfor.gsubзаменяет каждое совпадение и возвращает два значения, новую строку и счётчик:print((s:gsub("a", "b")))выводит только строку.
В следующем уроке, про объекты и метатаблицы, вы узнаете, как на самом деле работает двоеточие, и дадите собственным таблицам методы. Но сначала проверьте свои знания на сегодняшних продажах на рынке.
Задание
- 1
Пройдите по
salesс помощьюgmatchи нарисуйте столбчатую диаграмму: для каждой культуры её название, дополненное пробелами до 14 символов (считайте их с помощьюutf8.len), а затем по одному символу#на каждую проданную штуку. Следите за пробелами после некоторых запятых: в названия они попадать не должны. И словоогурцытоже не должно создавать проблем.pumpkins ### carrots ####### огурцы ##### strawberries #### - 2
Под диаграммой выведите, сколько штук Эмма продала всего и какая культура продавалась лучше всех:
Всего: 19, лидер продаж: carrots.