CA

retireCharactersInArrayString(string, array)

Por caotic, 15 de jan. de 2013 em Mods, funções e outros

8
1.4k
caoticC
15 de janeiro de 2013 às 12:06

Eu estava querendo fazer alguma gambiarra para passar o tempo.

E tive a ideia de fazer esta função.

Ela retira caracteres de uma string para usa - la basta colocar os caracteres que deseja retirar numa array e chamar a função.

 

local function retirecharacterString(string, value)
k = 1
while k < #string do
local str = string.sub(stg or string, k, k)
if str == tostring(value) then
local sub = string.sub(stg or string, 0, k-1)
local strsub = string.sub(stg or string, k+1, #string)
stg = ""..sub..""..strsub..""
k = k+1
end
k = k+1
end
return stg
end

 

 

function retireCharactersInArrayString(string, array)
for i = 1,#array do
x = ""
x = x..retirecharacterString(string,
array[i])
end
return x
end

 

Se printar dessa maneira:

 

print(retireCharactersInArrayString("GOD OF WAR", {"G", "O", "D", " "}))

 

Vai aparecer

"F WAR"

Editado Janeiro 15 por caotic

OneshotO
15 de janeiro de 2013 às 13:46

Legalzinha, mas dá pra fazer tudo isso com um string.gsub, caotic.

 

function removeCharInString(str, pat)
       pat = table.concat(pat)
       str = str:gsub("[".. pat .."]", "")
       return str
end

 

Abração.

Editado Janeiro 15 por Oneshot

caoticC
15 de janeiro de 2013 às 13:50

Legalzinha, mas dá pra fazer tudo isso com um string.gsub, caotic.

 

function removeCharInString(str, pat)
	str = str:gsub("[".. pat .."]", "")
	return str
end

 

Abração.

 

Ja sabia...

Eu fiz ela so para desafiar o sub.

 

Ate mais.

SlicerS
15 de janeiro de 2013 às 14:00

ta virando o mestre na arte dos POGs heim caotic kkk

20cm2
16 de janeiro de 2013 às 02:45

Se você quer tirar só {"G","O","D"," "} o certo não retornar OF WAR? (sem retirar o O)

Editado Janeiro 16 por 20cm

caoticC
16 de janeiro de 2013 às 09:11

Se você quer tirar só {"G","O","D"," "} o certo não retornar OF WAR? (sem retirar o O)

 

Ja que ele repete todas as caracteres da string ele acaba retirando o "O".

20cm2
16 de janeiro de 2013 às 13:07

HMMMMMMMMMMMMMMMMM verdade HASUAHUS

Vou tentar fazer um que corta só um e na ordem

Mas gostei xD, apesar que usaria o gsub do oneshot

OneshotO
23 de janeiro de 2013 às 09:53

Então, caras, percebi essa dúvida aí de vocês, só dando uma esclarecida.

 

A função string.gsub tem essa propriedade, ela é usada da seguinte maneira:

 

string.gsub(s, pattern, repl[, n])

 

Esse n que é opcional ao declarar a função, é o número de vezes que ele vai substituir algo, ou seja:

 

local s = "Teste Teste"

 

Se você fizer isso com a função string.gsub,

 

string.gsub(s, "Teste", "")

 

No fim, ele vai retornar uma cadeia vazia, agora se você fizer isso:

 

string.gsub(s, "Teste", "", 1)

 

Ele vai retornar:

 

" Teste"

 

Com o espaço ali, já que não adicionamos na nossa pattern de busca.

 

Espero que tenham compreendido.

 

Abraços.