将Python翻译为Lua:在列表中替换字符串字符

我正在学习Lua,对Python有一些了解,我想像Python一样替换字符串中的字符,但我没有找到准确的翻译函数。

我想在Lua中完成以下操作:

l = ["#01","#02", "#03"]
print(l)

for i in range(len(l)):
    l[i]=l[i].replace("#","")
    #print (i)

print (l)
点赞
用户21945
用户21945

首先在Python中你可以使用列表推导式:

>>> l = ["#01", "#02", "#03", "04"]
>>> l = [s.replace('#', '') for s in l]
>>> print(l)
['01', '02', '03', '04']

如果你需要直接在原列表上进行修改:

>>> l[:] = [s.replace('#', '') for s in l]

在Lua中,你可以使用for遍历列表/数组/表,并使用gsub替换子字符串:

> l = {"#01", "#02", "#03", "04"}
> for k, v in pairs(l) do print(k, v) end
1   #01
2   #02
3   #03
4   04

> for k in next,l do l[k] = l[k]:gsub("#", "") end
> for k, v in pairs(l) do print(k, v) end
1   01
2   02
3   03
4   04
2017-08-12 00:37:15
用户1847592
用户1847592

string.replace(pattern, replace_string, ...)

该函数是 string.gsub() 的等价物,但不包含魔术字符(即一些特殊字符)。

function string:replace(pattern, replace_string, ...)
   return (self:gsub(
      pattern:gsub("%p","%%%0"),
      replace_string:gsub("%%","%%%%"),
      ...
   ))
end

例如:

print(string.replace("25%", "%", " percent"))  --> 25 percent
print(("n>=0"):replace(">=", "≥"))             --> n≥0
s = "#01"; print(s:replace("#", ""))           --> 01
2017-08-12 08:41:55