加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua:替换字符串中的字符列表

发布时间:2020-12-15 00:26:49 所属栏目:大数据 来源:网络整理
导读:是否可以根据Lua中的列表替换字符,如Perl中的tr?例如,我想用A到B和B替代A(例如AABBCC变成BBAACC). 在Perl中,解决方案是$str?= tr / AB / BA /.有没有在Lua这样做的本地方法?如果没有,我认为最好的解决方案是遍历整个字符串,因为单独的替换需要使用特殊的符
是否可以根据Lua中的列表替换字符,如Perl中的tr?例如,我想用A到B和B替代A(例如AABBCC变成BBAACC).

在Perl中,解决方案是$str?= tr / AB / BA /.有没有在Lua这样做的本地方法?如果没有,我认为最好的解决方案是遍历整个字符串,因为单独的替换需要使用特殊的符号来区分已被替代的字符和不是的字符.

编辑:我的目标是计算DNA串的反向互补,如here所述.

解决方法

string.gsub可以拿一张表作为第三个参数.使用第一次捕获作为关键字,为每个匹配查询表,并将相关值用作替换字符串.如果该值为nil,则该匹配不会更改.

所以你可以建立一个这样的帮助表:

local s = "AABBCC"
local t = {A = "B",B = "A"}
local result = string.gsub(s,"[AB]",t)
print(result)

或同样的一行:

print((string.gsub("AABBCC",{A = "B",B = "A"})))

输出:

BBAACC

对于“[AB]”,“”等单字符模式可以工作,因为在表中找不到任何东西都不会改变. (但我不认为效率更高)但是对于一些更复杂的情况,需要一个好的模式.

以下是Lua中的编程示例:该函数将字符串中每个出现的$varname的全局变量varname的值替换:

function expand (s)
    return (string.gsub(s,"$(%w+)",_G))
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读