Lua - Строки

Здравствуйте, стремящиеся к знаниям программисты! Сегодня мы погружаемся в чудесный мир строк в Lua. Как ваш доброжелательный сосед-преподаватель информатики, я рад помочь вам в этом путешествии. Давайте представим строки как слова и предложения программирования - это то, как мы работаем с текстом в нашем коде. Так что наденьте ваши шляпы для обучения, и давайте начнем!

Lua - Strings

Работа со строками

В Lua строки resemble магические sequences из символов, которые мы можем манипулировать различными способами. Давайте начнем с азов:

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

local greeting = "Hello, World!"
local name = 'Alice'
local multiline = [[
This is a
multiline string
]]

В этом примере мы создали три строки:

  1. greeting использует двойные кавычки
  2. name использует одинарные кавычки
  3. multiline использует двойные квадратные скобки для нескольких строк

Оба типа кавычек работают одинаково, но использование двойных квадратных скобок позволяет включать переносы строк.

Конкатенация

Конкатенация - это просто изысканное слово для обозначения объединения строк. В Lua мы используем оператор ..:

local first_name = "John"
local last_name = "Doe"
local full_name = first_name .. " " .. last_name
print(full_name)  -- Вывод: John Doe

Здесь мы объединили first_name, пробел и last_name, чтобы создать full_name.

Изменение регистра

Иногда нам нужно кричать (заглавные буквы) или шептать (строчные буквы) наши строки:

local text = "Hello, Lua Learners!"
print(string.upper(text))  -- Вывод: HELLO, LUA LEARNERS!
print(string.lower(text))  -- Вывод: hello, lua learners!

Функции string.upper() и string.lower() делают exactly то, что вы ожидаете - они делают наш текст ЗАГЛАВНЫМИ или все строчными.

Замена подстроки

Нужно найти и заменить часть строки? Lua справится с этим:

local sentence = "I love apples, apples are my favorite fruit."
local new_sentence = string.gsub(sentence, "apples", "oranges")
print(new_sentence)  -- Вывод: I love oranges, oranges are my favorite fruit.

Здесь string.gsub() заменяет все occurrences слова "apples" на "oranges". Это как функция find-and-replace в вашем текстовом редакторе!

Поиск и обратное чтение

Поиск подстрок

Чтобы найти подстроку в строке, мы используем string.find():

local text = "Lua is fun and powerful!"
local start, finish = string.find(text, "fun")
print("'fun' starts at position " .. start .. " and ends at " .. finish)
-- Вывод: 'fun' starts at position 8 and ends at 10

Эта функция возвращает начальную и конечную позиции подстроки.

Обратное чтение строк

Хотите прочитать свою строку задом наперед? Используйте string.reverse():

local forward = "Lua is awesome"
local backward = string.reverse(forward)
print(backward)  -- Вывод: emosewa si auL

Это как магия - ваш текст мгновенно переворачивается!

Форматирование строк

Форматирование строк необходимо, когда вы хотите создавать динамический текст. Lua предлагает мощный способ это сделать:

local name = "Alice"
local age = 30
local formatted = string.format("My name is %s and I am %d years old.", name, age)
print(formatted)
-- Вывод: My name is Alice and I am 30 years old.

В этом примере %s заменяется строкой name, а %d заменяется числом age. Это как заполнение пропусков в предложении!

Представление символов и байтов

Lua позволяет нам работать с отдельными символами в строке:

local str = "Lua"
print(string.byte(str, 1))  -- Вывод: 76 (ASCII код для 'L')
print(string.char(76))      -- Вывод: L

Функция string.byte() дает нам ASCII код символа, в то время как string.char() делает обратное.

Другие полезные функции

Давайте посмотрим на несколько других полезных функций для работы со строками:

Функция Описание Пример
string.len() Возвращает длину строки print(string.len("Lua")) -- Вывод: 3
string.rep() Повторяет строку print(string.rep("Ha", 3)) -- Вывод: HaHaHa
string.sub() Извлекает подстроку print(string.sub("Lua is fun", 1, 3)) -- Вывод: Lua

Эти функции resemble швейцарский армейский нож для работы со строками - невероятно универсальны и полезны!

В заключение, строки в Lua - это мощные инструменты, которые позволяют нам работать с текстом множеством творческих способов. Помните, что практика makes perfect, так что не бойтесь экспериментировать с этими функциями. Before you know it, вы будете легко создавать сложные программы!

Счастливого кодирования, будущие программисты! И помните, в мире программирования каждый символ имеет значение - буквально!

Credits: Image by storyset