Biblioteca String
A Biblioteca String disponibiliza diversas funções dentro da tabela string
. Ela também define uma metatabela __index
para as nossas strings que aponta para a tabela string
. Dessa forma, podemos acessar as funções da biblioteca diretamente na nossa string.
local hello = "ola %s"local world = "mundo"print(hello:format(world))print(string.format("%s %s", "ola", "mundo"))
ola mundoola mundo
String.format
Section titled “String.format”A função string.format
é uma ferramenta poderosa para formatar strings e converter números em strings. Ela retorna uma cópia do seu primeiro argumento (a “string de formato”), substituindo cada diretiva por uma versão formatada do argumento correspondente.
Diretivas de Formatação
Section titled “Diretivas de Formatação”As diretivas na string de formato seguem regras semelhantes às da função printf
em C. Uma diretiva consiste em um sinal de porcentagem (%
) seguido de uma letra que indica como formatar o argumento:
%d
- Inteiro decimal%x
- Hexadecimal (minúsculo)%X
- Hexadecimal (maiúsculo)%f
- Número de ponto flutuante%s
- String%q
- Formata booleanos, nil, números e strings de uma forma que o resultado é uma constante válida no código fonte Lua. Booleanos e nil são escritos da maneira óbvia (true, false, nil). Números de ponto flutuante são escritos em hexadecimal, para preservar a precisão total.
print(string.format("%d + %d = %d", 1, 1, 1 + 1)) -- 1 + 1 = 2print(string.format("#%02x%02x%02x", 0, 255, 0)) -- #00ff00print(string.format("#%02X%02X%02X", 0, 255, 0)) -- #00FF00print(string.format("%02d/%02d/%04d", 3, 7, 2025))print(string.format("%f", 100)) -- 100.000000print(string.format("%.2f", 100)) -- 100.00print(string.format("km %20.1f", 100)) -- km 100.0print(string.format("%-20.1f km", 100)) -- 100.0 kmprint(string.format("%.3d", 10)) -- 010print(string.format("%.10f", 10.0)) -- 10.0000000000
String.sub
Section titled “String.sub”A função string.sub
é usada para extrair uma parte específica de uma string. Ela recebe três argumentos: a string original, o índice inicial e o índice final. Retorna a parte da string compreendida entre os índices inicial e final.
local mensagem = "Olá, mundo!"local parte = string.sub(mensagem, 1, 4)
print(parte) -- Olá
String.find
Section titled “String.find”Busca uma substring dentro de uma string e retorna as posições inicial e final, ou nil
se não encontrada:
local mensagem = "Olá, Lua!"local inicio, fim = string.find(mensagem, "Lua")
print(inicio, fim) -- 7 9
String.upper e String.lower
Section titled “String.upper e String.lower”A função string.upper
é usada para converter todos os caracteres de uma string em letras maiúsculas. Enquanto a função string.lower
é usada para converter a string palavra
em letras minúsculas.
local palavra = "lua"
local palavra_maiuscula = string.upper(palavra)print(palavra_maiuscula) -- LUA
local palavra_minuscula = string.lower(palavra)print(palavra_minuscula) -- lua
String.reverse
Section titled “String.reverse”A função string.reverse
é usada para inverter a ordem dos caracteres de uma string.
local palavra = "Lua"local palavra_invertida = string.reverse(palavra)print(palavra_invertida) -- auL
String.rep
Section titled “String.rep”A função string.rep
permite repetir uma string um determinado número de vezes. Ela recebe dois parâmetros: a string a ser repetida e a quantidade de vezes que ela deve ser repetida.
local original = "Olá!"local repetido = string.rep(original, 3)print(repetido) -- Olá!Olá!Olá!
String.gmatch
Section titled “String.gmatch”A função string.gmatch
é usada para iterar sobre as ocorrências de um padrão em uma string. Ela recebe dois parâmetros: a string a ser analisada e o padrão a ser procurado. Ela retorna uma função iteradora que pode ser usada em um loop for
.
local texto = "Lua é uma linguagem de programação"
for palavra in string.gmatch(texto, "[%aéçã]+") do print(palavra)end
Luaéumalinguagemdeprogramação
String.gsub
Section titled “String.gsub”Substitui todas as ocorrências de um padrão por outra string:
local texto = "Lua é uma linguagem de programação"local novo_texto = string.gsub(texto, "linguagem", "idioma")print(novo_texto) -- Lua é uma idioma de programação
print(string.gsub("ola pessoal", "l", "u")) -- oua pessoau 2print(string.gsub("ola pessoal", "ss", "ç")) -- ola peçoal 1print(string.gsub("ola pessoal", "a", ".")) -- ol. pesso.l 2
Encontrar Padrões
Section titled “Encontrar Padrões”Uma classe de caracteres é usada para representar um conjunto de caracteres. As seguintes combinações são permitidas para descrever uma classe de caracteres:
Elas são amplamente utilizadas em diversas funções da biblioteca de strings do Lua, como string.match
, string.gmatch
e string.gsub
.
Caractere de Classe | descrição |
---|---|
%a | representa todas as letras. |
%c | representa todos os caracteres de controle. |
%d | representa todos os dígitos. |
%l | representa todas as letras minúsculas. |
%p | representa todos os caracteres de pontuação. |
%s | representa todos os caracteres de espaço. |
%u | representa todas as letras maiúsculas. |
%w | representa todos os caracteres alfanuméricos. |
%x | representa todos os dígitos hexadecimais (0-9, a-f, A-F). |
%z | representa o caractere com representação 0. |
%x | representa o próprio caractere x (ex: %., %ç, %õ) |
[set] | representa a classe que é a união de todos os caracteres no conjunto |
[^set] | representa o complemento do conjunto, onde o conjunto é interpretado como descrito acima. |
local texto = "Olá, mundo!"local texto_encontrado = string.match(texto, "%a+")
print(texto_encontrado)
Ol
local texto = "Ola, mundo!"
for texto_encontrado in string.gmatch(texto, "[Oauo]") do print(texto_encontrado)end
Oauo
[^set]
Section titled “[^set]”local texto = "Ola, mundo!"
for texto_encontrado in string.gmatch(texto, "[^Oauo]") do print(texto_encontrado)end
l,
mnd!