我有一个中文的lua字符串,例如
str = '这是一个中文字符串' -- in English: 'this is a Chinese string'
现在我想迭代上面的字符串,得到以下结果:
str[1] = '这'
str[2] = '是'
str[3] = '一'
str[4] = '个'
str[5] = '中'
str[6] = '文'
str[7] = '字'
str[8] = '符'
str[9] = '串'
并输出9
作为字符串的长度。
有什么想法吗?
答案 0 :(得分:3)
如果您使用Lua 5.3中的utf8
模块或与LuaJIT一起使用的luautf8模块,那么这样的事情应该有效:
local str = '这是一个中文字符串'
local tbl = {}
for p, c in utf8.codes(str) do
table.insert(tbl, utf8.char(c))
end
print(#tbl) -- prints 9
答案 1 :(得分:0)
之前我没有在lua中使用过非英文字符,而我的模拟器只是将它们放入'?'但是有些事情可能有用:
convert = function ( str )
local temp = {}
for c in str:gmatch('.') do
table.insert(temp, c)
end
return temp
end
这是一个简单的函数,它利用string.gmatch()将字符串分成单个字符并将它们保存到表中。它会像这样使用:
t = convert('abcd')
这将使't'成为包含a,b,c和d的表。
t[1] = a
t[2] = b
...
我不确定这是否适用于汉字,但值得一试。