Lua gsub 第二个实例

我正在使用以下代码:

local mystring = 'Thats a really nice house.'
string.gsub(mystring,"% ", "/",1)

将第一个空格字符替换为一个斜杠。

但是如何仅替换第二个空格的出现呢?

点赞
用户1442917
用户1442917

你可以用其它内容替换第一个实例(假定替换内容不在字符串中,你可以检查一下),然后再换回来:

print(mystring:gsub("% ", "\1",1):gsub("% ", "/",1):gsub("\1","% ", 1))

这段程序会输出:Thats a/really nice house.。另外,你无需使用%转义空格。

2014-11-14 15:46:58
用户3677376
用户3677376

你可以使用函数作为 string.gsub 的替换值,并自己计算匹配次数:

local mystring = "那是一间非常漂亮的房子。"
local cnt = 0
print( string.gsub( mystring, " ", function( m )
  cnt = cnt + 1
  if cnt == 2 then
    return "/"
  end
end ) )
2014-11-14 16:04:59
用户107090
用户107090

尝试使用 string.gsub(mystring,"(.- .-) ", "%1/",1) 进行替换。

2014-11-14 16:30:23