我想从字符串中删除不在列表中的单词。

例如,我有字符串“我喜欢馅饼和蛋糕”或“馅饼和蛋糕是好的”,并且我要删除不是“ pie ”或“ cake ”的单词,并以“a”结尾字符串为“派蛋糕”。

如果可以从表中加载不删除的单词,那就太好了。

最佳答案

这是另一种解决方案,但是您可能需要修剪结果中的最后一个空格。

acceptable = { "pie", "cake" }
for k,v in ipairs(acceptable) do acceptable[v]=v.." " end
setmetatable(acceptable,{__index= function () return "" end})

function strip(s,t)
    s=s.." "
    print('"'..s:gsub("(%a+) %s*",t)..'"')
end

strip("i like pie and cake",acceptable)
strip("pie and cake is good",acceptable)
gsub是这里的重点。使用gsub和一个函数还有其他变体,而不是为acceptable设置一个元表。

10-06 14:26