lua string.find无法识别子字符串

时间:2018-11-24 22:43:18

标签: string lua substring

我正在将LUA用作Minecraft Mod的一部分-我不确定会对事情有多大影响-请参阅openComputers。

代码尝试将给定的字符串与通过迭代一系列包含名称的项的插槽获得的字符串匹配。

重要的代码块是:

    term.write("enter name")
    name=term.read()

返回一个字符串,例如“森林”不带引号。我还检查了数据类型。

然后,该代码随后解析商品清单,以查找名称中带有“森林”的商品。价值的第一行在某种程度上是特定于游戏的,但是输出应该使它变得不重要。

    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。我已经在解释器中分别测试了match和find功能,例如:

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

很好。

抱歉,这很明显,非常感谢

2 个答案:

答案 0 :(得分:0)

尝试从读取名称中剥离所有尾随空格,如下所示:

(from Type1 o1 in collection1 join Type2 o2 in collection2 on o1.Id equals o2.RelatedId select new { O1 = o1, O2 = o2 }). Count(item => (item.O1.SomeProperty = item.O2.SomeOtherProperty) == null);

答案 1 :(得分:0)

我找到了一个解决方案,将string.gsub与ascii代码一起使用而不是字符本身可以解决此问题。对于遇到相同问题的人:

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

这将删除换行符,并允许从此以后进行字符串匹配。