Я люблю Lua. I love Lua.

Регулярные выражения

Posted in Uncategorized by ilovelua on Январь 11, 2012

Понадобилось в слове заменить первую букву с заглавной на прописную.
Можно, конечно, сделать это по рабоче-крестьянски:

local str = "ComboBox"
local firstLetter = string.sub(str, 1, 1)
local tail = string.sub(str, 2)

str = string.lower(firstLetter) .. tail

print(str)

А можно и поизысканней:

local str = "ComboBox"
print(str, "-->", string.gsub(str, "%u?", string.lower, 1))

str = "comboBox"
print(str, "-->", string.gsub(str, "%u?", string.lower, 1))

ComboBox --> comboBox 1
comboBox --> comboBox 1

Вопросительный знак в паттерне нужен для того, чтобы заменялась только первая буква, а не любая заглавная.

Регулярные выражения

Posted in Uncategorized by ilovelua on Декабрь 19, 2011

Задача: есть таблица table. Ключ для записи задается в виде «field1.field2.field3.field4.field5.field». Нужно в этой таблице записать значение:

table[field1][field2][field3][field4][field5][field] = value

Некоторые поля в таблице, что характерно, могут отсутствовать.

Решение: (more…)

Регулярные выражения

Posted in Uncategorized by ilovelua on Сентябрь 22, 2011

Понадобилось сделать следующее:

есть список файлов, некоторые из которых содержат признак локализации — знак подчеркивания и две буквы локализации перед расширением файла, например:

default.lua
default_de.lua
default_fr.lua

Нужно отрезать от имени файла расширение с точкой и, если есть, признак локализации. В итоге я сделал так:

  local newFile = string.gsub(file, '(.lua)$', '')
  newFile = string.gsub(newFile, '(_%a%a)$', '')

А есть путь короче? Что-то у меня со всякими string.find(), string.match() ничего не получилось.