MA

Funçao String.explode(Str, Sep)

Por MatheusGlad, 11 de mar. de 2011 em Mods, funções e outros

5
2.5k
MatheusGladM
11 de março de 2011 às 11:58

function string.explode(str, sep) -- function by MatheusMkalo
   local dat = {}
   local lastsep = 0
   for i = 1, #str do
       if str: sub(i, i+#sep-1) == sep then
           local addt = lastsep == 0 and str: sub(1, i-1) or str: sub(lastsep+#sep, i-1)
           if addt ~= "" then
               table.insert(dat, addt)
           end
           str = str:sub(1, i-1) .. str:sub(i+#sep-1)
           lastsep = i-#sep+1
       end
       if #dat == 0 and i == #str then
           table.insert(dat, str)
           break
       end
       if i == #str then
           table.insert(dat, str: sub(lastsep+#sep, #str))
       end
   end
return dat
end

 

Funçao string.explode dos ots em lua...

 

N funfa com pattern

Editado Março 29 por MatheusMkalo

RoksasR
11 de março de 2011 às 12:28

Hm, interessante, oque realmente faz esta função? Faz algo explodir? Dê uma breve explicação...

 

 

Abç!

satan666S
14 de março de 2011 às 21:46

só dando umas sugestões na questão de que ele não reconhece patterns maiores que 1 caractere utiliza a função "string.len(string)" que retorna o tamanho da cadeia de caracteres, assim você pode usar a pattern do tamanho que quizer.

 

utilize o loop "repeat" ao invés do "for" assim economiza loop.

2 semanas depois...
MatheusGladM
22 de março de 2011 às 13:13

Fiz algumas modificaçoes, agora da pra usar com mais de uma letra mais ainda deve ter alguns bugs.

1 mês depois...
satan666S
20 de abril de 2011 às 21:40

Não entendi que você colocou no tópico que a função não funciona com patterns então funciona com o que?

 

Existe algums incovenientes tais como, com o uso de uma pattern maior que 1 caractere a primeira string retorna com o caractere digitado e não após o caractere como era pra ser.