Ir para conteúdo
Entre para seguir isso  
Undead Slayer

doChangeWord(string,string_pos,new_word)

Recommended Posts

Undead Slayer    0
Undead Slayer

Função bem simples. Ela simplesmente mexe com strings ja existentes. Ela pega o character em tal posição (string_pos), em tal string (string), e substitui pela letra/palavra/frase desejada (new_word), lembrando que 'new_word' tambem deve ser uma string.

 

Caso não intenderam, perguntem.

 

Função:

 

Adicionem isto em data/lib/functions (Caso no 8.4) ou em data/global (Versões inferiores a 8.4)

 

[spoiler_name=doChangeWord(string,string_pos,new_words)]function doChangeWord(string,string_pos,new_word)

 

local total = string.len(string)

 

if (string_pos == (total) or string_pos < (total)) and (string_pos == (-total) or string_pos > (-total)) then

if string_pos > 1 then

local string_part_1 = string.sub(string,1,string_pos-1)

local string_part_2 = string.sub(string,string_pos+1,total)

local string = "".. string_part_1 .."".. new_word .."".. string_part_2 ..""

return string

 

elseif string_pos == 1 then

local string_part = string.sub(string,2,total)

local string = "".. new_word .."".. string_part ..""

return string

 

elseif string_pos == -1 then

local string_part = string.sub(string,1,total-1)

local string = "".. string_part .."".. new_word ..""

return string

 

elseif string_pos == total then

local string_part = string.sub(string,1,total-1)

local string = "".. string_part .."".. new_word ..""

return string

 

elseif string_pos == -total then

local string_part = string.sub(string,2,total)

local string = "".. new_word .."".. string_part ..""

return string

 

elseif string_pos < -1 then

local string_part_1 = string.sub(string,1,total+string_pos)

local string_part_2 = string.sub(string,total+string_pos+2,total)

local string = "".. string_part_1 .."".. new_word .."".. string_part_2 ..""

return string

end

 

else

return LUA_ERROR

end

end[/spoiler_name]

 

A função esta meio grande para não ter nenhum bug nos varios tipos de uso (Em string_pos pode ser usar 1, 2, -1, -4, qualquer tipo de referencia a um character na string)

 

Bom, é isso, espero que usem bem... :bye:

Editado por Undead Slayer

Compartilhar este post


Link para o post
Cabral    2
Cabral

Boa Parabens

Muito Bom Sua Lib Tanto Quanto As Do Mock

esse e um script bem avançado merece ate palmas xD

parabens 100% aprovado

Compartilhar este post


Link para o post
GDLib    2
GDLib

Aprenda mais sobre manipulação de strings e o uso da biblioteca string genérica do Lua. Com isso, você pode obter o mesmo resultado (e até melhor) com apenas uma linha.

Compartilhar este post


Link para o post
Mock    32
Mock
doChangeWord(string,string_pos,new_word)

 

:D ae undead agora q vc termino essa função posso faze a função p "encriptar" o string u.u

Compartilhar este post


Link para o post
Undead Slayer    0
Undead Slayer
Aprenda mais sobre manipulação de strings e o uso da biblioteca string genérica do Lua. Com isso, você pode obter o mesmo resultado (e até melhor) com apenas uma linha.

 

Ao inves de so falar mal, aomenos fale se foi uma boa ideia fazer a função. Axo ridicula essa sua mania de so criticar. Ta certo que o script pode estar ruim, mas fale pelomenos algo positivo. Mas se quiser continuar assim, continua. Tem pessoas que, diferente de você, criticam (com fundamentos, diferente do seu comentario ridiculo acima), ajudam, parabenizam, ou seja, são tudo aquilo que você não é. Não me entenda mal, mas so rebaixar as pessoas não é algo criativo ou construtivo.

 

//No More

// Undead SLayer

Compartilhar este post


Link para o post
GDLib    2
GDLib

@Undead Slayer

 

Se não sabe encarar críticas apenas não o faça, eu não critiquei em momento algum, te dei um conselho de como melhorar o que você fez. Não falei mal, não falei bem, apenas falei que existe formas de se fazer com uma linha e te aconselhei aprender. E muito menos te rebaixei, eu nem se quer dei minha opnião pessoal. Se você está aberto a idéias aprenda a ouvir todos os lados, eu critiquei com fundamentos apontando argumentos, então se não gosta de um argumento contrário ao seu, não poste nada. Fórum é local de discussões e nem sempre a opinião de um é opinião de todos. Melhor ouvir verdades do que singelos comentários aparentemente amigos, se você não está disposto a melhoras, tudo bem, nunca mais te dou conselhos.

 

É o que eu sempre digo, não vá até o caminho que traçam, pois ele só leva até onde já foram, vá além.

 

P.S: outra coisa, eu poderia muito bem ter colocado aqui como seria uma forma melhor de se fazer, usando string.gsub, string.gmatch, expressões regulares, mas prefiro que você mesmo corra atrás e faça por si só para aprender.

Editado por GDLib

Compartilhar este post


Link para o post
Undead Slayer    0
Undead Slayer

Este sim foi uma critica construtiva. Não sei se percebeu mais seu primeiro post foi me rebaixando, como se eu não soube-se que podia ser melhorado...

Bom, estou sempre oberto a opiniões, e obrigado por falar estas funções, estou estudando elas, e assim que eu conseguir melhor a função (Uma linha talvez n consiga), eu posto, e se for preciso critique de novo. Pois é errado que se aprende. A cada erro meu, eu aprendo uma coisa nova, e se quiser me ensinar a fazer em uma linha, tem meu msn (Ensina pu favo)

 

//Obrigado

//Undead Slayer

Compartilhar este post


Link para o post
MotoBoy    0
MotoBoy

:D

boa ae :D

o Mock perguntou se eu sabia algo parecido..

mais eu quis ir mais além O.o

daí eu ao invez de fazer uma de subtituição eu quis editar a string.explode (consehlo do Nostradamus :P) para criar algo como "string.create" para poder criar string xD~~

mais muito boa sua ideia :]

 

flws~~

Compartilhar este post


Link para o post
nicolasduarte    0
nicolasduarte

Coloko isso lá, e depois como fasso pra abrir mais de um mundo?

Compartilhar este post


Link para o post
Mock    32
Mock
Coloko isso lá, e depois como fasso pra abrir mais de um mundo?

Cara

SE MATA!!!!!!!!!!!!!!!!!!!!!!

-.- porfavor entenda a diferença entre:

Wrold (mundo) e Word (palavra)

isso e uma função pra mudar letras em uma frase (string)

str = "oi"

str = doChangeWord(str,2,"LOL")

str vai ficar "oLOL"

Compartilhar este post


Link para o post
PoSo    0
PoSo
Cara

SE MATA!!!!!!!!!!!!!!!!!!!!!!

-.- porfavor entenda a diferença entre:

Wrold (mundo) e Word (palavra)

isso e uma função pra mudar letras em uma frase (string)

str = "oi"

str = doChangeWord(str,2,"LOL")

str vai ficar "oLOL"

Se não estou enganado ficaria:

"oLOLi" ou "oiLOL" agora não sei, precisaria ver de novo o código.

mas ele nao perde o restante da str, ele apenas "adiciona na posição".

Abraços.

Editado por PoSo

Compartilhar este post


Link para o post
Mock    32
Mock

Não ele subistitue

tanto q se vc fizer um for executar 1x para cada letra da p subistituirr TODAS as letras q vc quiser

exemplo

for i=1,string.byte(str) do

local letra = string.sub(str, i,i)

if letra == "a" then

str = doChangeWord(str,i,'@')

end

end

ai sre str for

str = "oi beleza xD agua!"

vai ficar

str = "ou belez@ xD @agua!"

 

 

ai o string vai virar

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×