【发布时间】:2017-08-12 00:09:31
【问题描述】:
我正在学习 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)
【问题讨论】:
我正在学习 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)
【问题讨论】:
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
【讨论】:
首先在 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
【讨论】:
nil 在next 之后是多余的