lua
2012-06-22 14 views 7 likes 
7

Próbuję policzyć liczbę razy, że "-" występuje w ciągu znaków.liczenie liczby wystąpień ciągu znaków

Tak na przykład, występuje tutaj dwa razy „a --b -C”

Próbowałem następujących, ale daje mi 4 zamiast 2, jakiś pomysł dlaczego?

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

W wersji Lua 5.1 i nowszych należy użyć string.gmatch zamiast string.gfind – Smile4ever

Odpowiedz

7

- znak ma specjalne znaczenie wzorców, używany dla nie-chciwy powtórzenia.

Musisz uciec, to znaczy użyć wzoru " %-%-".

22

można rzeczywiście zrobić to jako jedną wkładką użyciu string.gsub:

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

nie zapętlenie wymagany!

Niezalecane w przypadku dużych plików, ponieważ funkcja zapisuje dane wejściowe w zmiennej _ i zatrzymuje się w pamięci, dopóki zmienna nie zostanie zniszczona.

Powiązane problemy