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

时间:2014-11-04 13:23:50

标签: lua

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

table {"abc"}
return string.sub(table[1], 2, 2)
b

但是想要替换表中的1个特定字符而不用更改整个字符串。

table = {"abc"}

table = {"axc"}

1 个答案:

答案 0 :(得分: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)

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

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