2012-06-22 33 views
7

Tôi đang cố đếm số lần "-" xảy ra trong chuỗi.đếm số chuỗi xảy ra

Vì vậy, ví dụ, nó xảy ra hai lần ở đây 'một --b --c'

Tôi đã cố gắng sau, nhưng nó mang lại cho tôi 4 thay vì 2, bất kỳ ý tưởng tại sao?

argv='a --b --c' 
count = 0 
for i in string.gfind(argv, " --") do 
    count = count + 1 
end 
print(count) 
+1

Trong Lua 5.1 trở lên, bạn cần phải sử dụng string.gmatch thay vì string.gfind – Smile4ever

Trả lời

7

Ký tự - có ý nghĩa đặc biệt trong các mẫu, được sử dụng để lặp lại không tham lam.

Bạn cần phải thoát khỏi nó, tức là sử dụng mẫu " %-%-".

22

bạn thực sự có thể làm điều này như một lớp lót bằng string.gsub:

local _, count = string.gsub(argv, " %-%-", "") 
print(count) 

không looping yêu cầu!

Không nên dùng cho tệp lớn vì chức năng lưu đầu vào vào biến số _ và sẽ giữ bộ nhớ cho đến khi biến bị hủy.

Các vấn đề liên quan