我有一个包含一组分隔符标记的字符串,看起来像这样:
local str = "foo;bar;baz"
我希望能够准确判断给定的令牌是否在这个字符串中:
in_str("foo", str) -- true
in_str("bar", str) -- true
in_str("baz", str) -- true
in_str("ba", str) -- false
in_str("foo;", str) -- false
使用PHP和正则表达式,我会像这样完成所需的效果:
function in_str($needle, $haystack) {
return (bool)preg_match('/(^|;)' . preg_quote($needle, '/') . '(;|$)/', $haystack);
}
我不确定如何将这个逻辑转换成Lua代码。我更希望使用原始的Lua语言实现,不需要任何插件、扩展等。同时,我希望它的效率要合理。目前为止,我唯一能正确实现的方法是将字符串分割成表格,然后遍历它。但这显然非常低效。
O(n)
,这还没有计算每次需要拆分字符串的时间。 - FtDRbwLXw6