string.find()
Parte da seção Fundamentos do Journey de Lua da Coddy. Lição 48 de 90.
A função string.find() é uma ferramenta poderosa para fazer buscas em strings. Ela permite procurar uma string menor (chamada de padrão) dentro de uma string maior e informa exatamente onde ela foi encontrada.
Aqui está a sintaxe básica:
string.find(text, pattern)Quando string.find() localiza o padrão com sucesso, retorna dois números: a posição inicial e a posição final da correspondência. Se o padrão não for encontrado, retorna nil.
Aqui está um exemplo simples:
local sentence = "The treasure is hidden here"
local start_pos, end_pos = string.find(sentence, "treasure")
print(start_pos, end_pos) -- exibe: 5 12Neste exemplo, a palavra "tesouro" começa na posição 5 e termina na posição 12 da frase.
Uma coisa que você precisa saber: o texto que você procura é um padrão, não texto simples. Alguns caracteres têm significados especiais nos padrões: . % - + * ? [ ] ^ $ ( ). Você vai aprendê-los mais adiante no curso. Letras, dígitos e espaços correspondem a si mesmos, como no exemplo acima, mas um caractere especial pode corresponder a mais do que você queria:
print(string.find("Score: 105", "1.5")) -- exibe: 8 10 (o . correspondeu ao 0)Para pesquisar o texto exatamente como está escrito, adicione mais dois argumentos: 1 (começar no primeiro caractere) e true (uma pesquisa simples, sem caracteres especiais):
print(string.find("Score: 105", "1.5", 1, true)) -- exibe: nil
print(string.find("Version 1.5", "1.5", 1, true)) -- exibe: 9 11Desafio
FácilCrie um detector de mensagens secretas que procure uma palavra-código oculta em uma mensagem de texto maior. Declare uma variável chamada message e atribua a ela o valor "The ancient treasure lies beneath the old oak tree". Use a função string.find() para procurar a palavra "treasure" na mensagem e armazene as posições inicial e final em variáveis chamadas startPos e endPos. Imprima os dois valores das posições em linhas separadas.
Experimente você mesmo
-- Declare a variável message
local message = "The ancient treasure lies beneath the old oak tree"
-- TODO: Escreva seu código aqui para encontrar a palavra "treasure" e armazenar as posições
-- Imprima as posições
print(startPos)
print(endPos)Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores 2 Relacionais e Lógicos
Operadores de IgualdadeOperadores RelacionaisO Operador 'and'O Operador 'or'O Operador 'not'Avaliação de Curto-CircuitoValores Truthy e FalsyRecapitulação - Lógica Simples7Lógica Condicional Básica
A instrução if-thenA instrução if-then-elseA instrução elseifRecapitulação - Baú do Tesouro2Variáveis e Tipos de Dados
O que é uma Variável?NúmerosStringsBooleanosO Valor 'nil'A Função type()Convenções de NomenclaturaRecapitulação - Perfil de Personagem5Saída Básica
Imprimindo LiteraisImprimindo VariáveisImprimindo Múltiplos ValoresCombinando Strings e VariáveisA Função tostring()EntradaCastRecapitulação - Relatório de StatusRecapitulação - Até 1208Fundamentos de Manipulação de Strings
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Revisão - Formatar Nome de Usuário3Operadores 1: Aritmética e Concatenação
Operadores AritméticosOperador de MóduloOperador de ExponenciaçãoConcatenação de StringsPrecedência de OperadoresRecapitulação - Cálculos Simples6Projeto: Exibição de Atributos do Personagem
Mensagem de Boas-vindasDeclarar Atributos do Personagem9Fundamentos de Funções
Declarando uma FunçãoChamando uma FunçãoFunções com ParâmetrosFunções com Múltiplos ParâmetrosA Instrução 'return'Recapitulação - Calculadora de ÁreaPratique por conta própria: Compilador de Lua online