我使用 LUA 作为 Minecraft mod 的一部分 - 我不确定这会产生多大的影响 - 请参阅 openComputers。
代码尝试将给定字符串与通过迭代一系列包含具有名称的项的槽而获得的字符串进行匹配。
重要的代码块是:
term.write("enter name")
name=term.read()
返回一个字符串,例如“森林”不带引号。我还检查了数据类型。
然后,代码会解析元素 list ,寻找名称中带有“Forest”的元素。第一行的值(value)在某种程度上是特定于游戏的,但输出应该使这一点变得不重要。
item = storage.getStackInSlot(sides.top,i)
这会返回一堆内容,然后用以下内容进行精炼:
item_name = item.label
它返回“Bee Sample - Species: Forest”,我也检查过这绝对是一个字符串。
然后,代码对于匹配/查找应返回某些内容的行返回 nil != nil。我什至在 string.find 操作之前打印两个字符串。
match = string.match(item_name, name, 1, true)
print(match)
返回零。
我不知道为什么这会返回 false。我已经在解释器中分别测试了匹配和查找功能,例如:
a=bic
b=ambico
string.find(b,a)
一切都很好。
抱歉,如果这是非常明显的,非常感谢
最佳答案
尝试从读取名称中删除所有尾随空格,如下所示:
name = term.read():gsub('%s+$', '')
关于string - lua string.find 无法识别子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462995/