string.gsub returns both the replaced string and the number of replacements.

replacement count The second return value from `gsub` is useful when later logic needs to know whether anything changed.

Replace Text

text
replace_text.lua
Replay: real traced execution (multi-file project)
local text = "red,blue"
local replaced, count = string.gsub(text, ",", "|")

print("text=" .. text)
print("replaced=" .. replaced)
print("count=" .. count)
local text = "red,green"
local replaced, count = string.gsub(text, ",", "|")

print("text=" .. text)
print("replaced=" .. replaced)
print("count=" .. count)
local text = "blue,blue"
local replaced, count = string.gsub(text, ",", "|")

print("text=" .. text)
print("replaced=" .. replaced)
print("count=" .. count)
  1. text ← red,blue, replaced ← red|blue, count ← 1

    1local text→ red,blue = "red,blue" --@text="red,green", "blue,blue"2local replaced→ red|blue, count→ 1 = string.gsub(textred,blue, ",", "|")34print("text=" .. textred,blue)5print("replaced=" .. replacedred|blue)6print("count=" .. count1)
    outputtext=red,blue
    replaced=red|blue
    count=1
  1. text ← red,green, replaced ← red|green, count ← 1

    1local text→ red,green = "red,green"2local replaced→ red|green, count→ 1 = string.gsub(textred,green, ",", "|")34print("text=" .. textred,green)5print("replaced=" .. replacedred|green)6print("count=" .. count1)
    outputtext=red,green
    replaced=red|green
    count=1
  1. text ← blue,blue, replaced ← blue|blue, count ← 1

    1local text→ blue,blue = "blue,blue"2local replaced→ blue|blue, count→ 1 = string.gsub(textblue,blue, ",", "|")34print("text=" .. textblue,blue)5print("replaced=" .. replacedblue|blue)6print("count=" .. count1)
    outputtext=blue,blue
    replaced=blue|blue
    count=1