Lua中如何将特定字符列表替换为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计563个文字,预计阅读时间需要3分钟。
在Lua中,没有内建的字符串替换功能类似于Perl中的`tr`。但是,你可以通过编写一个简单的函数来实现类似的功能。
以下是一个实现字符串替换的Lua函数示例:
luafunction replace_chars(str, from, to) local result= for i=1, #str do local char=str:sub(i, i) if from:find(char) then result=result .. to:sub(from:find(char), from:find(char)) else result=result .. char end end return resultend
-- 使用示例local str=AABBCClocal from=Alocal to=Blocal new_str=replace_chars(str, from, to)print(new_str) -- 输出: BBAACC
这个`replace_chars`函数接受三个参数:要处理的字符串`str`,需要被替换的字符序列`from`,以及替换成的字符序列`to`。函数通过遍历字符串,并检查每个字符是否在`from`中,如果是,则用`to`中的相应字符替换它。
是否可以根据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", "[AB]", {A = "B", B = "A"})))
输出:
BBAACC
对于“[AB]”,“”等单字符模式可以工作,因为在表中找不到任何东西都不会改变. (但我不认为效率更高)但是对于一些更复杂的情况,需要一个好的模式.
以下是Lua中的编程示例:该函数将字符串中每个出现的$varname的全局变量varname的值替换:
function expand (s) return (string.gsub(s, "$(%w+)", _G)) end
本文共计563个文字,预计阅读时间需要3分钟。
在Lua中,没有内建的字符串替换功能类似于Perl中的`tr`。但是,你可以通过编写一个简单的函数来实现类似的功能。
以下是一个实现字符串替换的Lua函数示例:
luafunction replace_chars(str, from, to) local result= for i=1, #str do local char=str:sub(i, i) if from:find(char) then result=result .. to:sub(from:find(char), from:find(char)) else result=result .. char end end return resultend
-- 使用示例local str=AABBCClocal from=Alocal to=Blocal new_str=replace_chars(str, from, to)print(new_str) -- 输出: BBAACC
这个`replace_chars`函数接受三个参数:要处理的字符串`str`,需要被替换的字符序列`from`,以及替换成的字符序列`to`。函数通过遍历字符串,并检查每个字符是否在`from`中,如果是,则用`to`中的相应字符替换它。
是否可以根据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", "[AB]", {A = "B", B = "A"})))
输出:
BBAACC
对于“[AB]”,“”等单字符模式可以工作,因为在表中找不到任何东西都不会改变. (但我不认为效率更高)但是对于一些更复杂的情况,需要一个好的模式.
以下是Lua中的编程示例:该函数将字符串中每个出现的$varname的全局变量varname的值替换:
function expand (s) return (string.gsub(s, "$(%w+)", _G)) end

