20

Fixstring(String)

Por 20cm, 10 de nov. de 2012 em Mods, funções e outros

13
2.1k
20cm2
10 de novembro de 2012 às 17:18

O que ela faz?

Ela transforma uma string, por exemplo, de "eitor laba v1d4 l0k4" para "Eitor Laba V1d4 L0k4"

Pode-se dizer que ela deixa em caixa alta a primeira letra de cada palavra de uma string, e, se forem números, não faz nada.

 

Aqui vai ela:

 

function fixString(string)
local k = string.explode(string," ")
local x = ""
local y = 0
for i = 1, #k do
if y == 0 then
x = x ..string.sub(k[i],0,1):upper()..string.sub(k[i],2)
y = 1
else
x = x .." "..string.sub(k[i],0,1):upper()..string.sub(k[i],2)
end
end
return x
end

 

 

Flw!

Editado Novembro 10 por 20cm

SkyLighS
10 de novembro de 2012 às 17:20

Parabéns @20cm

 

Reputado.

VodkartzinV
10 de novembro de 2012 às 17:22

gostei bastante da função cara

parabéns!

caoticC
11 de novembro de 2012 às 15:33

E bem raro ver string.explode fora do evento dos talkactions ainda mais para espaço.

Muito bom cara.

3 semanas depois...
OneshotO
30 de novembro de 2012 às 17:40

Um string.gmatch.

 

function fixStr(str)
   local ret = ""
   for n in string.gmatch(str, "%w+") do
       ret = ret .. string.sub(n, 0, 1):upper() .. string.sub(n, 2) .." "
   end
   return ret
end

1 mês depois...
20cm2
17 de dezembro de 2012 às 17:49

Um string.gmatch.

 

function fixStr(str)
local ret = ""
for n in string.gmatch(str, "%w+") do
	ret = ret .. string.sub(n, 0, 1):upper() .. string.sub(n, 2) .." "
end
return ret
end

 

Na verdade essa função deixa um espaço depois da última palavra (fixString("camelo") > "camelo_")

SkymagnumS
17 de dezembro de 2012 às 17:55

Porque ele deixou um espaço na ret

 

ret = ret ..string.sub(n,0,1):upper()..string.sub(n,2).."AQUI"

 

é só deixar assim

 

ret = ret ..string.sub(n,0,1):upper()..string.sub(n,2)..""

Editado Dezembro 17 por Skymagnum

OneshotO
17 de dezembro de 2012 às 17:59

Eee que legal...

 

function fixStr(str)
   local ret = ""
   for n in string.gmatch(str, "%w+") do
       ret = ret .. string.sub(n, 0, 1):upper() .. string.sub(n, 2)
   end
   return ret
end

SlicerS
18 de dezembro de 2012 às 11:11

achu q assim fica melhor '--'

function fixStr(str)
local ret = ""
for n in string.gmatch(str, "%w+") do
	ret = ret .. (ret == "" and "" or " ") .. string.sub(n, 0, 1):upper() .. string.sub(n, 2):lower()
end
return ret
end

n pode esquecer do lower() no final.. ja q o usuario pode escrever tpw..

SLiCer, SLICER, sLIcER... kk

Editado Dezembro 18 por Slicer

2 semanas depois...
20cm2
27 de dezembro de 2012 às 16:18

Skymagnum, esse não é o ponto, eu sei que isso põe espaço -.- o que a função faz é dividir palavras por espaço (%w+) , deixar a primeira letra em caixa alta, depois por o resto, e por um espaço

O que eu to querendo dizer é que, se eu "fixo" a string "mamãe quer sexo" ela sai como "Mamãe Quer Sexo" (note o espaço no final) - e nenhum de vocês conseguiram fazer com que resultasse em "Mamãe Quer Sexo" (não que eu ache que vocês não consigam) acho que vocês [mais o oneshot] deviam prestar mais atenção antes de postar)

 

enfim , obrigado bjos

OneshotO
27 de dezembro de 2012 às 18:43

Ué, meu velho, vem falar para eu prestar atenção, mas não vi você consertar esse tal bug de deixar espaços. Você tem que entender que eu encurto funções dos outros jogadores, para que eles notem e aprendam as funções nativas do Lua que são muito úteis. Não tem razão nenhuma para você ficar irritadinho. Se viu que eu errei, corrija e ganhe a fama de "corrigi o erro do Um Tiro".

 

Enfim, tá aí.

 

function fixStr(str)
   local ret = ""
   for n in string.gmatch(str, "%w+%s*") do
       ret = ret .. string.sub(n, 0, 1):upper() .. string.sub(n, 2)
   end
   return ret
end

 

Ah, também desenvolvi seu rank por storage que você queria lá na seção de websites. Viu como eu sou um cara legal?

20cm2
28 de dezembro de 2012 às 04:27

Ué, meu velho, vem falar para eu prestar atenção, mas não vi você consertar esse tal bug de deixar espaços. Você tem que entender que eu encurto funções dos outros jogadores, para que eles notem e aprendam as funções nativas do Lua que são muito úteis. Não tem razão nenhuma para você ficar irritadinho. Se viu que eu errei, corrija e ganhe a fama de "corrigi o erro do Um Tiro".

 

Enfim, tá aí.

 

function fixStr(str)
local ret = ""
for n in string.gmatch(str, "%w+%s*") do
	ret = ret .. string.sub(n, 0, 1):upper() .. string.sub(n, 2)
end
return ret
end

 

Ah, também desenvolvi seu rank por storage que você queria lá na seção de websites. Viu como eu sou um cara legal?

minha função era aquela quem tinha que consertar a função era tu, não eu lol

mas vlw pelo rank s2

iunixI
30 de dezembro de 2012 às 06:04

Eu fiz uma função assim semana passada:

 

function string:fix()
return string.upper(self:sub(1,1)) .. self:sub(2):lower()
end

function string:fixall()
local R = {}
local t = string.explode(self, ' ')
for i,v in pairs (t) do
	table.insert(R,v:fix())
end
return table.concat(R,' ')
end 

 

A de cima pega só a 1º palavra e a outra pega todas.

Editado Dezembro 30 por iuniX