2013-11-26 2 views
7

У меня проблема с Lua, чтобы проверить, не указано ли строковое значение в другой строке.Lua - get indexOf string

Вот как я, вероятно, будет делать это в Javascript:

'my string'.indexOf('no-cache') === -1 // true 

но в Lua Я пытаюсь использовать string модуль, который дает мне неожиданный ответ:

string.find('my string', 'no-cache') -- nil, that's fine but.. 
string.find('no-cache', 'no-cache') -- nil.. that's weird 
string.find('no-cache', 'no') -- 1, 2 here it's right.. strange.. 

ответ

12

Как уже упоминалось, - является образцом метасимволом, specifically:

  • один символьный класс, сопровождаемый «-», который также соответствует 0 или большему количеству повторений символов в классе. В отличие от «*», эти элементы повторения всегда будут соответствовать кратчайшей возможной последовательности;

Вы могли бы быть заинтересованы в plain вариант для string.find. Это позволит избежать необходимости избегать чего-либо еще в будущем.

string.find('no-cache', 'no-cache', 1, true) 
5

- является метасимвол в lua. Вам нужно избежать этого. string.find('no-cache', 'no%-cache')