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

Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Thiago Brazileiro
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

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/27dd9ded-1824-4501-9335-7a70dce7a760%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

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

Eric Chiesse
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


Em sáb, 19 de out de 2019 às 07:34, Thiago Brazileiro <[hidden email]> escreveu:
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

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/27dd9ded-1824-4501-9335-7a70dce7a760%40googlegroups.com.

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/CAE%3Dv0fz%2Be5_nN6TU8M6phbJM%3DW8tkhUJ_B%3DUyf-ULhJcHxDanA%40mail.gmail.com.
Reply | Threaded
Open this post in threaded view
|

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

Thiago Brazileiro
In reply to this post by Thiago Brazileiro
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

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/9ac27221-b340-46f5-9c3b-765a134645f1%40googlegroups.com.
Reply | Threaded
Open this post in threaded view
|

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

Armando Staib
-- %- na frente, faz ele requerer o - na frente 

o que faz este? 

Em dom, 20 de out de 2019 às 19:32, Thiago Brazileiro <[hidden email]> escreveu:
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

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/9ac27221-b340-46f5-9c3b-765a134645f1%40googlegroups.com.

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/CAOB%2Bzfm5U%3D%3DVdmf%3DTjf-4xgEXY%2BzAucuAssJ9vZztTtVWesnmg%40mail.gmail.com.
Reply | Threaded
Open this post in threaded view
|

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

Reinaldo
In reply to this post by Thiago Brazileiro
Muito bom, parabéns.

Grato

On Sun, Oct 20, 2019 at 7:32 PM Thiago Brazileiro <[hidden email]> wrote:
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

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/9ac27221-b340-46f5-9c3b-765a134645f1%40googlegroups.com.

--
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 [hidden email].
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/lua-br/CADhdG2f_Je9ou0EAyGpusL2xZRpH8h-9SgP7SAh8wiaedevPvQ%40mail.gmail.com.