2012-06-22 26 views
7

Estoy tratando de contar la cantidad de veces que "-" ocurre en una cadena.contando el número de ocurrencias de cadena

Así, por ejemplo, se produce dos veces aquí 'un --b --c'

He intentado lo siguiente, pero me da 4 en vez de 2, alguna idea de por qué?

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

En Lua 5.1 y superior necesita usar string.gmatch en lugar de string.gfind – Smile4ever

Respuesta

7

El carácter - tiene un significado especial en los patrones, que se utiliza para una repetición no expansivo.

Tiene que escapar, es decir, use el patrón " %-%-".

22

en realidad se puede hacer esto como una sola línea usando string.gsub:

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

sin loop requerido!

No se recomienda para archivos grandes porque la función guarda la entrada en la variable _, y se mantendrá en la memoria hasta que se destruya la variable.

Cuestiones relacionadas