Ler inteiros que estao separados por espaço, na entrada padrao

34 views
Skip to first unread message

Thiago Brazileiro

unread,
Oct 19, 2019, 6:34:56 AM10/19/19
to Lua BR
Olá, sou novo com a linguagem lua, e me deparei com um necessidade meio chata, sempre que preciso ler inteiros que não estão separados pela quebra de linha, eu preciso fazer um tratamento em strings para separar um inteiro do outro.
por exemplo
10 10 155
invés de
10
10
155
Existe alguma função que faça a separação dos inteiros automaticamente, sem q eu precise manualmente fazer esta separação ? 

Att, Thiago Brazileiro

Eric Chiesse

unread,
Oct 20, 2019, 3:02:35 AM10/20/19
to lua...@googlegroups.com
O que eu faço nesses casos é criar uma função de split para tratar a linha de entrada e depois converto para números.

Depois de um tempo criei uma lib com umas funções que sempre uso (pra não ficar sempre reescrevendo). Acabei depois subindo no luarocks.

Ex:

require "luno"
luno.functional.exposeAll()
luno.string.exposeSome()

line = io.read('*l')
strValues = split(line, ' +')
values = map(tonumber, strValues)
printDeep(values)

Se por acaso vc quiser testar vc tem que instalar o luno: luarocks install luno
No luarocks tem outras libs além da minha que fazem parecido com isso.
---
Eric


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para lua-br+un...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/27dd9ded-1824-4501-9335-7a70dce7a760%40googlegroups.com.

Thiago Brazileiro

unread,
Oct 20, 2019, 6:32:53 PM10/20/19
to Lua BR
descobri uma forma de fazer, nao sei se voces entenderam a pergunta que eu fiz tambem, sei la. enfim, fui no forum em ingles e achei uma resposta q apenas precisei adaptar um pouco, vou postar aqui o codigo. enfim, obrigado <3

s = "Parabens 222 15 cara, -37você é doidao 777 hehehe"

a = {}
--%d+ separa todos os numeros sem sinal
-- %a+ separa as palavras sem acentos e sem numeros
-- %w+ pega tudo menos as letras acentuadas
-- %- na frente, faz ele requerer o - na frente
-- com o ? depois do patter, o patter fica opcional
-- %-?%d+ pega numeros positivos e negativos

for word in string.gmatch(s, "%-?%d+") do
print(word)
end

Armando Staib

unread,
Oct 21, 2019, 10:28:54 AM10/21/19
to lua...@googlegroups.com
-- %- na frente, faz ele requerer o - na frente 

o que faz este? 

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para lua-br+un...@googlegroups.com.

Reinaldo

unread,
Nov 14, 2019, 7:06:42 AM11/14/19
to lua...@googlegroups.com
Muito bom, parabéns.

Grato

Reply all
Reply to author
Forward
0 new messages