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