lua string.find не распознает подстроку - PullRequest
0 голосов
/ 25 ноября 2018

Я использую LUA как часть мода Minecraft - я не уверен, насколько это влияет на вещи - см. OpenComputers.

Код пытается сопоставить данную строку с строкой, полученной путем итерации по серииСлоты, содержащие элементы с именами.

Куски кода, которые важны:

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

возвращает строку, например «Лес» без кавычек.Я также проверил тип данных.

Затем код анализирует список предметов, ищущих один с именем «Лес».Первая строка того, что стоит, в некоторой степени специфична для игры, но вывод должен сделать это неважным.

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

это возвращает кучу вещей, но затем уточняется:

    item_name = item.label

который возвращает "Bee Sample - Species: Forest", который я также проверил, определенно является строкой.

Затем код возвращает ноль для строки, где поиск / совпадение должен что-то возвращать! = ноль.Я даже печатаю две строки перед операцией string.find.

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

возвращает ноль.

Я понятия не имею, почему это возвращает false.Я проверил совпадение и нахожу функциональность отдельно в интерпретаторе с такими вещами, как:

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

, и это было хорошо.

Извините, если это супер очевидно, и большое спасибо

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Я нашел решение, использование string.gsub с кодом ascii вместо самого символа решает проблему.Для тех, кто сталкивается с той же проблемой:

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

Это удаляет перевод строки и позволяет впредь сопоставлять строки.

0 голосов
/ 28 ноября 2018

Попробуйте удалить все конечные пробелы из прочитанного имени следующим образом:

name = term.read():gsub('%s+$', '')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...