假设我在 lua 中有一个字符串:
> s = "abc123"
我想得到
s1
这只是 s 的第一个字符,或者如果 s
为空则为空。
我试过使用
> s1 = s[1]
和
> s1 = s[0]
如何在不使用外部 Lua 库的情况下获取第一个字符
但两者都只返回
nil
.
可以用
string.sub()
得到长度为1的子串:
> s = "abc123"
> string.sub(s, 1, 1)
a
这也适用于空字符串:
> string.sub("", 1, 1) -- => ""
你也可以使用这个更短的变体:
s:sub(1, 1)
local string_meta = getmetatable('')
function string_meta:__index( key )
local val = string[ key ]
if ( val ) then
return val
elseif ( tonumber( key ) ) then
return self:sub( key, key )
else
error( "attempt to index a string value with bad key ('" .. tostring( key ) .. "' is not part of the string library)", 2 )
end
end
local str = "Hello"
print(str[1])
是的,我知道这个帖子已经有一年了,而且已经有人回答了,但我还是为你做了一个功能。
function toTitleCase(originalString, printString)
if printString ~= true and printString ~= false then
printString = false
end
changeString = originalString:gsub("%W%l", string.upper):sub(0)
titleCase = changeString:sub(1, 1):upper() .. changeString:sub(2, #changeString)
if printString == true then
print(titleCase)
else
return titleCase
end
end