CA

string.explode(str, char)

Por caotic, 05 de fev. de 2013 em Mods, funções e outros

20
3k
dalvorsnD
19 de fevereiro de 2013 às 19:49

@dalvorsn

gfind n é gmatch?(procurei no no site,diz que numa atulização gfind passou a ser gmatch)

ou tem alguma diferença

nunca tinha visto achei que era alguma função nova das libs de ot.

 

sim, a gfind virou gmatch, é que no debugger que eu usei(scite), existia gfind e apresentava melhor desempenho aparentemente

20 de fevereiro de 2013 às 02:30

todo mundo fasendo verção de string.explode,vo fase uma tbm

 

fis rapidão,então nem me procupei com nome pra variveis a função

function s(a,b)
local tab = {}
for x in a:gmatch("[^"..b.."]+") do
  table.insert(tab,x)
end
return tab
end

@dalvorsn

só esqueceu de que tem a possibilidade de alguem usar "." como sep(tem sempre alguem a tentar fazer coisas do tipo)

 

onde(que programa) vcs testan o desempenho do script?

 

Tava testando aqui sua func, acho que não da certo se vc usar, por exemplo, str = 'tessstesss' com o sep es.

Editado Fevereiro 20 por Demonbholder

VincV
20 de fevereiro de 2013 às 16:34

todo mundo fasendo verção de string.explode,vo fase uma tbm

 

fis rapidão,então nem me procupei com nome pra variveis a função

function s(a,b)
local tab = {}
for x in a:gmatch("[^"..b.."]+") do
  table.insert(tab,x)
end
return tab
end

@dalvorsn

só esqueceu de que tem a possibilidade de alguem usar "." como sep(tem sempre alguem a tentar fazer coisas do tipo)

 

onde(que programa) vcs testan o desempenho do script?

 

Tava testando aqui sua func, acho que não da certo se vc usar, por exemplo, str = 'tessstesss' com o sep es.

é acho que n tem geito de fase funciona com separador de mais de um caractere sem altera muito.

mas podemos resolver o problema renomeando a função para string.explodeOfOneCaractereSep suahsahusuha

outra versão(pog version)

function s(a,b)
 a = a:gsub('(.-)'..b,'"%1",')
 local l = #a - a:reverse():find(",")
 a = 'return {'..a:sub(1,l)..',"'..a:sub(l + #b+1,-1)..'"}'
 return loadstring(a)()
end

2 meses depois...
MatheusGladM
13 de abril de 2013 às 21:12

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

 

By: Socket, velho amigo.

2 semanas depois...
SlicerS
20 de abril de 2013 às 23:02

os caras usam esses patterns de uma maneira q ta loko mano... kkk