替换字符串中的单词而不替换重复项

replace word in string without replacing duplicates

我想做类似 ('hello i am hello i is'):gsub('hello', 'hola') 的事情,而不是 'hola i am hola i is' 而是 'hello i am hola i is'.

我不知道如何解决这个问题,因为它可能需要复杂的字符串操作,而在字符串操作方面我只有 4/10。

我想避免的两件事是使用 string.subfor loops,但如果我需要使用它们,我可以。

请帮我解决我的问题

替换 "hello" 的某个出现的简单方法是

local text = "hello I am hello I am hello"
local count = 0
local replace = 2
print((text:gsub("hello", function()
  count = count + 1
  if count == replace then
    return "hola"
  end
end)))

打印hello I am hola I am hello

或者:

print(text:gsub("hello", "hola", 2):gsub("hola", "hello", 1))

因此,您将前 2 个 hello 替换为 hola,然后将第一个 hola 替换为 hello。这当然只有在字符串的那部分没有其他 hola 的情况下才有效。