web-dev-qa-db-fra.com

Comment vérifier si le texte correspondant se trouve dans une chaîne dans Lua?

J'ai besoin de faire une condition qui est vraie si un texte correspondant particulier est trouvé au moins une fois dans une chaîne de texte, par exemple:

str = "This is some text containing the Word tiger."
if string.match(str, "tiger") then
    print ("The Word tiger was found.")
else
    print ("The Word tiger was not found.")

Comment puis-je vérifier si le texte se trouve quelque part dans la chaîne?

38
Village

Vous pouvez utiliser string.match Ou string.find. J'utilise personnellement string.find() moi-même. Vous devez également spécifier end de votre instruction if-else. Ainsi, le code réel sera comme:

str = "This is some text containing the Word tiger."
if string.match(str, "tiger") then
  print ("The Word tiger was found.")
else
  print ("The Word tiger was not found.")
end

ou

str = "This is some text containing the Word tiger."
if string.find(str, "tiger") then
  print ("The Word tiger was found.")
else
  print ("The Word tiger was not found.")
end

Il convient de noter que lorsque vous essayez de faire correspondre des caractères spéciaux (tels que .()[]+- etc.), ils doivent être échappés dans les modèles en utilisant un caractère %. Par conséquent, pour correspondre, par exemple. tiger(, L'appel serait:

str:find "tiger%("

Plus d'informations sur les modèles peuvent être consultées sur wiki Lua-Users ou Sections de documentation de SO.

64
hjpotter92