在lua中获取字符串的第一个字符

时间:2017-03-07 14:03:01

标签: lua

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

> s = "abc123"

我想获得s1这只是s的第一个字符,如果s为空,则为空。

我尝试过使用

> s1 = s[1]

> s1 = s[0]

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

但两者都只返回nil

3 个答案:

答案 0 :(得分:12)

您可以使用string.sub()获取长度为1的子字符串:

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

这也适用于空字符串:

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

答案 1 :(得分:10)

您还可以使用以下较短的变体:

s:sub(1, 1)

答案 2 :(得分:0)

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])