Skip to content

Strings

Strings são utilizadas para representar textos em Lua. Elas são sequências de bytes e podem armazenar caracteres Unicode. Strings são imutáveis, ou seja, não podemos modificar diretamente seus valores. Para alterar uma string, é necessário criar uma nova variável com os valores desejados. Além disso, não precisamos nos preocupar com a alocação e desalocação de memória para strings, pois Lua gerencia isso automaticamente.

local a,b
a = "Olá, pessoal"
b = string.gsub(a, "pessoal", "mundo")
print(a) -- Olá, pessoal
print(b) -- Olá, mundo!

Podemos utilizar o operador de tamanho (#) para obter o número de caracteres de uma string.

O operador # irá contar o tamanho em bytes, o que pode não ser o mesmo que o número de caracteres, especialmente em strings que contêm caracteres Unicode.

local msg
msg = "Oi"
print(#msg) -- 2

Podemos concatenar strings utilizando o operador de concatenação (..). Quando o operador é usado com um número, Lua automaticamente converte esse número para uma string.

> "Olá" .. ", mundo!" -- Olá, mundo!

Lua utiliza sequências de escape semelhantes às da linguagem C para representar caracteres especiais dentro de strings.

CaractereNome
\aSinal sonoro (bell)
\bRetrocesso (back space)
\fAlimentação de formulário (form feed)
\nNova linha (newline)
\rRetorno de carro (carriage return)
\tTabulação horizontal (horizontal tab)
\vTabulação vertical (vertical tab)
\Barra invertida (backslash)
Aspas duplas (double quote)
Aspas simples (single quote)

Podemos delimitar trechos extensos de texto ou blocos de código utilizando [[ e ]] em Lua.

local pagina = [[
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link href="css/style.css" rel="stylesheet">
</head>
<body>
</body>
</html>
]]

Às vezes, precisamos escrever: [ , dentro da nossa string, para isso utilizamos [===[ , como no exemplo abaixo:

string_longa = [===[
Aqui podemos colocar qualquer texto,
mesmo que contenha ]] dentro.
]===]