2013-11-26 14 views
7

Tôi đang mắc kẹt với một vấn đề trong Lua để kiểm tra xem giá trị chuỗi không được trình bày trong chuỗi khác.Lua - lấy chuỗi indexOf

Đó là làm thế nào tôi có thể sẽ làm điều đó trong Javascript:

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

nhưng trong Lua Tôi đang cố gắng sử dụng string mô-đun mà mang lại cho tôi câu trả lời bất ngờ:

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.. 

Trả lời

12

Như đã được đề cập, - là một metacharater mẫu, specifically:

  • một lớp nhân vật duy nhất tiếp theo '-', mà cũng phù hợp với 0 hoặc nhiều lần lặp lại của các nhân vật trong lớp. Không giống như '*', các mục lặp lại này sẽ luôn khớp với chuỗi ngắn nhất có thể;

Bạn có thể quan tâm đến tùy chọn plain cho string.find. Điều này sẽ tránh sự cần thiết phải thoát khỏi bất cứ điều gì khác trong tương lai.

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

- là một mô hình metacharacter trong lua. Bạn cần phải thoát khỏi nó. string.find('no-cache', 'no%-cache')