我没有编程经验,所以我不知道应该在标题中添加什么。
但请帮助我,这是一件非常简单的事情,我只想将船只['俾斯麦']改为船只['俾斯麦']。
示例如下
数据库/船舶
local ships = { }
----------------------------------------------
ships['俾斯麦'] = {
index=1, country='Germany', class='Bismarck-class'
}
----------------------------------------------
return { ships=ships }
然后
特殊数据/发货
local data = require("Database/Ship")
data.ships['俾斯麦'] = 'Bismarck'
return data
编辑:如何使用gsub执行此操作,例如来自其他人的代码:
local function replaceShipName(name)
name = name:gsub('俾斯麦', 'Bismarck')
name= name:gsub('提尔比茨', 'Tirpitz')
return name
end
答案 0 :(得分:3)
如果您想使用data.ships['俾斯麦']
作为密钥访问'Bismarck'
中的数据,请执行
data.ships['Bismarck'] = data.ships['俾斯麦']
答案 1 :(得分:1)
回答您编辑过的问题:
在这里使用gsub没有意义。一旦您将某些内容存储在具有某个键的表中,它将保持与该键相关联,直到您使用完全相同的键将其他内容存储在同一个表中,或者直到整个表因为您未使用而被垃圾收集它了。
(如果你正在使用名为"弱表"那么垃圾收集部分会变得更复杂,但你在这里没有使用它们。)
例如:
local t = {}
t["a"] = "A value"
print(t["a"]) -- "A value"
print(t["b"]) -- nil
t["b"] = t["a"]
print(t["a"]) -- "A value"
print(t["b"]) -- "A value"
t["a"] = nil
print(t["a"]) -- nil
print(t["b"]) -- "A value"
t = nil -- You can't access the table now, so it will be garbage collected at some point
答案 2 :(得分:0)
因此,如果我理解您的问题:您有重命名规则,例如将'俾斯麦'
重命名为'Bismarck'
local namingRules = {
'俾斯麦' = 'Bismarck',
'提尔比茨' = 'Tirpitz'
}
--do renaming for all data
local shipsData = data.ships
for key, value in pairs (shipsData) do
local newKey = namingRules[key]
if (newKey ~= nil) then
--if data should be renamed
shipsData[newKey] = shipsData[key]
shipsData[key] = nil
end
end
因此,使用此解决方案,您可以使用namingRules
表定义命名。如果你想使用gsub解决方案:
local shipsData = data.ships
for key, value in pairs (shipsData) do
local newKey = replaceShipName(key) -- this is your replaceShipName function
if (newKey ~= nil and newKey ~= key) then
shipsData[newKey] = shipsData[key]
shipsData[key] = nil
end
end