string.gsub (s, modello, repl [, n])
Restituisce una copia di s in cui tutte (o le prime n, se dato) le occorrenze dello schema sono state sostituite da una stringa sostitutiva specificata da repl, che può essere una stringa, una tabella o una funzione.
gsub restituisce anche, come secondo valore, il numero totale di corrispondenze verificatesi.
Se 'repl è una stringa, il suo valore viene utilizzato per la sostituzione. Il carattere '% funziona come carattere di escape: qualsiasi sequenza in 'repl della forma '%n, con n compreso tra 1 e 9, rappresenta il valore della n-esima sottostringa catturata (vedere sotto). La sequenza%0indica l'intera corrispondenza. La sequenza%%sta per un singolo '%.
Se 'repl è una tabella, la tabella viene interrogata per ogni corrispondenza, usando la prima cattura come chiave; se il modello non specifica alcuna cattura, viene usata l'intera corrispondenza come chiave.
Se 'repl è una funzione, questa viene richiamata ogni volta che si verifica una corrispondenza, con tutte le sottostringhe catturate passate come argomenti, in ordine; se lo schema non specifica alcuna cattura, l'intera corrispondenza viene passata come unico argomento.
Se il valore restituito dalla query della tabella o dalla chiamata di funzione è una stringa o un numero, viene utilizzato come stringa sostitutiva; altrimenti, se è falso o nullo, non viene effettuata alcuna sostituzione (cioè, la corrispondenza originale viene mantenuta nella stringa).
x = string.gsub("hello world", "(%w+)", "%1 %1")
--> x="hello hello world world"
x = string.gsub("hello world", "%w+", "%0 %0", 1)
--> x="hello hello world"
x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
--> x="world hello Lua from"
x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
--> x="home = /home/roberto, user = roberto"
x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
return loadstring(s)()
end)
--> x="4+5 = 9"
local t = {name="lua", version="5.1"}
x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
--> x="lua-5.1.tar.gz"