如何在 Lua 中获取字符串的第一个字符?

问题描述 投票:0回答:4

假设我在 lua 中有一个字符串:

> s = "abc123"

我想得到

s1
这只是 s 的第一个字符,或者如果
s
为空则为空。

我试过使用

> s1 = s[1]

> s1 = s[0]

如何在不使用外部 Lua 库的情况下获取第一个字符

但两者都只返回

nil
.

string lua
4个回答
31
投票

可以用

string.sub()
得到长度为1的子串:

> s = "abc123"
> string.sub(s, 1, 1)
a

这也适用于空字符串:

> string.sub("", 1, 1) -- => ""

19
投票

你也可以使用这个更短的变体:

s:sub(1, 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])

0
投票

是的,我知道这个帖子已经有一年了,而且已经有人回答了,但我还是为你做了一个功能。

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
© www.soinside.com 2019 - 2024. All rights reserved.