Lua如何在没有整个字符串的情况下替换表内的1个特定字符?

rwh*_*use 2 lua

已经知道如何展示特定的角色.

table {"abc"}
return string.sub(table[1], 2, 2)
b
Run Code Online (Sandbox Code Playgroud)

但是想要在改变整个字符串的情况下替换表中的1个特定字符.

table = {"abc"}
Run Code Online (Sandbox Code Playgroud)

table = {"axc"}
Run Code Online (Sandbox Code Playgroud)

小智 6

在Lua中,字符串是严格不可变的,因此它们本身无法更改.

因此,实现此目的的唯一方法是使用所需内容创建一个新字符串并将其插入table[1].字符串是否在表格内并不重要.

例如,通过获取字符串的开头和结尾并将它们与新部分连接,可以实现这一点:

local index = 2 -- The character we want to change
table[1] = string.sub(table[1], 1, index - 1) .. "x" .. string.sub(table[1], index + 1, -1)
Run Code Online (Sandbox Code Playgroud)

这将从字符串的开头提取所有字符,直到我们希望"替换"的字符之前的字符,附加新字符,然后追加旧字符串的其余部分,不包括我们"替换"的字符.

然而,在大多数情况下,使用像这样的单个字符并不是很明智,因为Lua具有相当强大的模式匹配和替换功能,例如string.gsub,它允许您轻松地替换更复杂的子字符串.(这里有 Lua编程的使用示例)