Lua中如何分割字符串并将内容存入键为数字、值为名称的table?
实现方案
你可以直接使用Lua内置的string.gmatch全局模式匹配实现需求,不需要额外编写字符串分割函数,适配你给出的字符串格式的代码如下:
str = "23 = John, 45 = Karl, 6 = Chloe, 34 = Sarah" local result = {} -- 按规则匹配键值对 for id_str, name in string.gmatch(str, "(%d+)%s*=%s*([^,]+)") do -- 把id转为数字类型作为键,同时去除姓名首尾多余空格 result[tonumber(id_str)] = string.match(name, "^%s*(.-)%s*$") end
你可以用以下代码验证输出结果:
for k, v in pairs(result) do print(k, v) end
输出效果和你需求的一致:
23 John 45 Karl 6 Chloe 34 Sarah
匹配规则说明
(%d+):捕获连续数字串,对应你的数字键%s*=%s*:匹配等号及两侧任意数量的空格,忽略格式差异([^,]+):捕获所有非逗号的字符,对应姓名字段- 最后对姓名做首尾去空处理,避免结果中残留多余空白字符
内容的提问来源于stack exchange,提问作者Glupschi
相关产品推荐
相关产品推荐

