【问题标题】:Translate Python to Lua: replace a string character in a list将 Python 翻译成 Lua:替换列表中的字符串字符
【发布时间】: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)

【问题讨论】:

    标签: python string replace lua


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      首先在 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
      

      【讨论】:

      • nilnext 之后是多余的
      猜你喜欢
      • 2013-11-15
      • 2011-10-20
      • 2019-03-08
      • 2019-01-30
      • 2013-12-02
      • 2011-05-16
      • 2010-10-20
      • 2013-06-20
      相关资源
      最近更新 更多