Ir para conteúdo

string.explode and toArray


caotic

Posts Recomendados

Bem era para estar postando na área de programação mais acho que vai se encaixar mais aqui.

Eu crei algumas patterns para strings usando c++.

 

String.explode(string, sep)

Ela explode a string separando ela com um separador(unico separador):

static int explodestr(lua_State *L)
{
int len;
int l=1;
string str = "";
string sep = lua_tostring(L, 2);
string y = lua_tostring(L, 1) + sep;
len = y.size();
int i =sep.find(sep, 1);
lua_createtable(L, len, 0);
 
 
for (int x=0; x<=len; x++)
   { 
  str = y.substr(x, 1);
  if (str == sep) {
lua_pushstring(L, y.substr(i+1, (x-i)-1).c_str());
          lua_rawseti (L, -2, l);
  i = x;
  l = l+1;
  }
 
   }
 
 
 
return 1;
}
Aproveitando o tópico também resolvi postar uma função que tinha feito para um projetinho.
strtoArray(string)
Retorna uma table com cada caracter da string:
Em c++:
static int strToArray(lua_State *L)
{
int len;
string y = lua_tostring(L, 1);
len = y.size();
lua_createtable(L, len, 0);
 
 
for (int x=0; x<=len; x++)
   {
  lua_pushstring(L, y.substr(x, 1).c_str());
lua_rawseti (L, -2, x+1);
 
   }
 
 
 
return 1;
}
Claro que da para fazer em Lua:
function strToArray(string)
len = #string
x = {}
for i=1, len do
table.insert(x, string.sub(string, i, i))
end
return x
end
Example:
string.explode:
local ex = string.explode("oi/"oi1"/oi2", "/")
for i=1, #ex do
print(ex[i])
end
strToArray:
local table = strToArray("oi")
for i=1, #table do
print(table[i])
end
Editado por caotic
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...