J'ai frappé un petit bloc avec l'analyse de chaîne. J'ai une chaîne comme:Lua 'plain' string.gsub
footage/down/temp/cars_[100]_upper/cars_[100]_upper.exr
et j'ai du mal à utiliser gsub pour supprimer une partie de la chaîne. Normalement, je ferais ce
lineA = footage/down/temp/cars_[100]_upper/cars_[100]_upper.exr
lineB = footage/down/temp/cars_[100]_upper/
newline = lineA:gsub(lineB, "")
qui normalement me donner « cars_ [100] _upper.exr »
Le problème est que gsub n'aime pas les [] ou d'autres caractères spéciaux dans la chaîne et contrairement à string.find gsub n'a pas la possibilité d'utiliser le drapeau 'plain' pour annuler la recherche de motif.
Je ne suis pas en mesure de modifier manuellement les lignes pour inclure des caractères d'échappement pour les caractères spéciaux car je fais un fichier de script de comparaison de fichiers.
Toute aide pour obtenir de lineA
à newline en utilisant lineB
serait la bienvenue.
Il suffit de le mettre dans une boucle jusqu'à trouver des rendements non nul pour correspondre à cette gsub remplace toutes les occurrences du motif. – sbk
Cela ne marche pas non plus, car les caractères magiques string.find sont considérés comme tels (voir la réponse ci-dessous). – Gert
Si le paramètre quatrième (self, pattern, init, plain) est vrai, la fonction ignore les caractères magiques du motif. – Kknd