lua string.find 不识别子字符串

我正在使用 LUA 作为我的 Minecraft mod 的一部分 - 不确定这会对什么产生影响 - 请参考 openComputers。

这段代码试图将给定的字符串与通过迭代包含名称的项目的系列匹配。

重要的代码块如下:

    term.write("输入名称")
    name=term.read()

返回一个不带引号的字符串,例如 "Forest"。 我也检查了数据类型。

稍后,代码通过查找名称中带有 "Forest" 的项目来解析项目清单。 第一行有点特殊适用于游戏,但输出应该将其忽略。

    item = storage.getStackInSlot(sides.top,i)

这样就会返回一堆东西,但然后通过以下方式进行了改进:

    item_name = item.label

它返回 "Bee Sample - Species: Forest",我也检查了它肯定是一个字符串。

然后,代码对于应该返回某个值的匹配/查找行返回 nil。 我甚至在 string.find 操作之前将两个字符串打印出来了。

    match = string.match(item_name, name, 1, true)
    print(match)

返回 nil。

我不知道为什么这会返回 false。 我已经在解释器中分别测试了匹配和查找功能,例如:

    a=bic
    b=ambico
    string.find(b,a)

它是好的。

如果这很明显,请原谅我,非常感谢

点赞
用户41661
用户41661

尝试将读取的名称末尾的所有空格去掉,如下所示:

name = term.read():gsub('%s+$', '')
2018-11-28 00:27:50
用户10700469
用户10700469

我已经找到了解决方案,使用 ASCII 码而不是字符本身来使用 string.gsub 解决了问题。对于那些遇到相同问题的人:

newstring = string.gsub(string, "[\10]", "")

这将删除换行符并继续进行字符串匹配。

2018-12-01 15:04:36