2012-06-22 20 views
7

Sto cercando di contare il numero di volte che "-" si verifica in una stringa.conteggio del numero di occorrenze di stringa

Così, per esempio, si verifica due volte qui 'un b --c'

Ho provato quanto segue, ma mi dà 4 invece di 2, qualche idea del perché?

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

In Lua 5.1 e versioni successive è necessario utilizzare string.gmatch anziché string.gfind – Smile4ever

risposta

7

Il - carattere ha un significato speciale nei modelli, utilizzato per una ripetizione non avidi.

È necessario evitarlo, ad esempio utilizzare il modello " %-%-".

22

si può effettivamente fare questo come un one-liner con string.gsub:

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

senza loop richiesto!

Non consigliato per file di grandi dimensioni perché la funzione salva l'input per la variabile _ e rimane sulla memoria finché la variabile non viene distrutta.

Problemi correlati