Ir para conteúdo

reverse(str)


Posts Recomendados

Digamos que eu gosto de usar o while:

 

function reverse(str)
local t = string.explode(str, " ")
x = #t
y = ""
while x > 0 do
_ = x-1 > 0 and t[x].." " or t[x]
y = y.._
x = x-1
end
return y
end

print(reverse("Ola oi ss kk"))

Editado por caotic
Link para o comentário
Compartilhar em outros sites

ficou até boa, mas você não precisa transformar em tabela pra depois transformar em string, pode fazer direto como string, assim:


function explode(e, sep)
   local result = {}    e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
   return result
end

function reverse(str)
   local ret_str = ""
   local words = explode(str, " ")

   for i = #words, 2, -1 do
       ret_str = ret_str .. words[i] .. " "
   end

   ret_str = words[1] and ret_str .. words[1] or ""

   return ret_str
end

Editado por dalvorsn
Link para o comentário
Compartilhar em outros sites

ficou até boa, mas você não precisa transformar em tabela pra depois transformar em string, pode fazer direto como string, assim:


function explode(e, sep)
local result = {}	e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
return result
end

function reverse(str)
local ret_str = ""
local words = explode(str, " ")

for i = #words, 2, -1 do
	ret_str = ret_str .. words[i] .. " "
end

ret_str = words[1] and ret_str .. words[1] or ""

return ret_str
end

Hum, boa, mas fiz na hora só tinha pensado desse modo ;d.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...