我看到了一份Lua字符串函数列表,其中包括用于全局搜索和替换的
为什么没有一个简单、快速、非正则表达式的字符串替换函数呢?
.gsub()
函数:http://www.gammon.com.au/scripts/doc.php?general=lua_string
所有的Lua字符串函数:static const luaL_Reg strlib[] = {
{"byte", str_byte},
{"char", str_char},
{"dump", str_dump},
{"find", str_find},
{"format", str_format},
{"gfind", gfind_nodef},
{"gmatch", gmatch},
{"gsub", str_gsub},
{"len", str_len},
{"lower", str_lower},
{"match", str_match},
{"rep", str_rep},
{"reverse", str_reverse},
{"sub", str_sub},
{"upper", str_upper},
{NULL, NULL}
};
为什么没有一个简单、快速、非正则表达式的字符串替换函数呢?
.gsub()
如此高效,以至于没有任何好处吗?
我发现这篇文章是2006年写的,但似乎并没有包括在内:http://lua-users.org/wiki/StringReplace。
gsub
时遇到了性能问题?当gsub
已经可以相对高效地完成纯文本搜索和替换时,还有什么其他用途呢?即使是 Penlight 对replace
的解释也只是几个对gsub
的调用。不过,你可以很容易地将找到的代码片段打包成一个模块。 - Okagsub
能够完全实现这个replace
函数的功能,而 Lua 的设计目标之一就是拥有一个小巧、通常不复杂的标准库。没有必要像这样重复。再次强调,Lua 是一种可扩展的语言——如果 你 需要它,非常容易添加这个功能。但大多数人并不需要它。 - Oka