, fonksiyonel-imsi çözüm akla gelen:
local function head(str) return str[1] end
local function tail(str) return substr(str, 2) end
local function helper(str, c)
if #str == 0 then
return ""
end
if c % 2 == 1 then
return toupper(head(str)) .. helper(tail(str),c+1)
else
return head(str) .. helper(tail(str), c+1)
end
end
function foo(str)
return helper(str, 1)
end
Yasal Uyarı: Sadece fikri gösteren Test edilmedi.
Ve şimdi gerçek, sen
[]
referans semantik ile rasgele erişimli karakterlerin listesi gibi bir dize davranabilirsiniz. Dizin ile döngü için basit hile yapmak sadece iyi.
function changeCase(str)
local u = ""
for i = 1, #str do
if i % 2 == 1 then
u = u .. string.upper(str:sub(i, i))
else
u = u .. string.lower(str:sub(i, i))
end
end
return u
end
: alt üst, hatta karakterlere beklenen, tuhaf karakterler gibi kelimeler çevirmek için bir işlev yapmak, Sonra
local original = "This LIBRARY should work with any string!"
local words = {}
for v in original:gmatch("%w+") do
words[#words + 1] = v
end
:
Not: Örneğiniz ayrıca karakterleri küçük harfe dönüştürür! –