use*_*307 3 string lua utf-8 multibyte coronasdk
我在Lua中有一个多字节字符串.
local s = "?????"
Run Code Online (Sandbox Code Playgroud)
如何获取字符串并将其拆分为字符串表?
在英文文本中,我可以使用这段代码.但这不适用于多字节.
local s = "foo bar 123"
local words = {}
for word in s:gmatch("%w+") do
table.insert( words, word )
end
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的那样,很难说出你想做什么: 你想在哪里拆分非ASCII字符,如果在空格处拆分是不够的?
如果您只想在非ASCII字符的单个字符之间进行拆分,则以下内容可能就足够了:
s = "oink barf ???????"
for word in s:gmatch("[\33-\127\192-\255]+[\128-\191]*") do
print (word)
end
Run Code Online (Sandbox Code Playgroud)
生产:
oink
barf
?
?
?
?
?
?
?
Run Code Online (Sandbox Code Playgroud)
这里的技巧是在UTF-8中,多字节字符每个都包含一个"前导字节",前两位等于11(所以\192- \255在Lua中记住,Lua中的字符转义是十进制的),后跟零或更多"尾随字节",前两位等于10(\128- \191在Lua中).