问题描述
我正在制作一个可以正确处理用户性别的程序。因此,它应该将 he
的每个实例替换为 she
,反之亦然。
问题是这也将替换 he
内的单词,例如 them
、their
、help
...
这就是我被卡住的地方。
local str = "the he he's hell"
str = str:gsub("he","she") --tried my best,not the correct solution!
print(str) --expecting "the she she's hell"
基本上将所有 he
替换为 she
。
解决方法
一种可能的解决方案,同时适用:
str = str:gsub("%a+",{he = "she",she = "he"})
%a+
匹配一个或多个基本上是单词的字母。该匹配项被相应的表条目替换或保持不变。
还有其他方法可以做到这一点,但这可能是实现双向解决方案的最短方法。
编辑:
关于第二个参数。我找不到任何关于此的文档。 你有吗?
不确定您在何处寻找文档,但 Lua Manual 说:
string.gsub (s,pattern,repl [,n])
...
如果 repl 是一个表,那么每个匹配项都会查询该表,使用 第一个捕获作为关键。