内容简介:本文简单介绍了如何在 Lua 中实现 split 函数Lua 的标准库并没有提供字符串的 split 函数,不过自己实现一下也并不困难,网上其实也早有了很多实现版本:之前有童鞋使用 Lua 实现了自己的 split 版本还与 JS(基于
本文简单介绍了如何在 Lua 中实现 split 函数
Lua 的标准库并没有提供字符串的 split 函数,不过自己实现一下也并不困难,网上其实也早有了很多实现版本:
之前有童鞋使用 Lua 实现了自己的 split 版本还与 JS(基于 V8 ) 中的标准实现进行了性能比较,有兴趣的朋友可以看看,过程其实挺有趣的,只是成文较早,文章中涉及的代码部分已经有了不少变化,阅读的时候注意一下即可(文章在 这里 )
在 lua-users.org 上甚至有篇专门的 wiki 讨论了这个话题,在 这里 .
各个实现的基本功能都是类似的,但是对于一些边界情况的处理则不尽相同,参考 JS 中对于 split 函数的 规范定义 ,我也尝试实现了一下自己的 split 函数版本,有兴趣的朋友可以参考一下:
function string:split_lite(sep)
local splits = {}
if sep == nil then
-- return table with whole str
table.insert(splits, self)
elseif sep == "" then
-- return table with each single character
local len = #self
for i = 1, len do
table.insert(splits, self:sub(i, i))
end
else
-- normal split use gmatch
local pattern = "[^" .. sep .. "]+"
for str in string.gmatch(self, pattern) do
table.insert(splits, str)
end
end
return splits
end
-- usage
local str = "a,,b"
string.split_lite(str, ",")
string.split_lite(str, ";")
string.split_lite(str)
string.split_lite(str, "")
str:split_lite("")
其实比起实现,我更好奇的是为什么 Lua 不将 split 函数加入到标准库中,毕竟标准库中已经有了 table.concat 函数(可以认为是 split 的反函数).
简单搜索了一下相关的 Lua mailing list ,发现了一个相关 回答 ,引用如下:
“Because it is quite easy to write a join in C, and it is much more efficient than its equivalent in Lua. A split in C is more difficult (among other things because of its endless variations), and would offer no significant performance gain over its equivalent in Lua.” – Roberto
大意是说使用 C 来实现(等同于加入标准库?) split 并不会有很大的性能提升,所以就不实现了.
不过个人觉得应该还有更多的细节考量,所以在 Lua mailing list 中又询问了一下,等有了更多答复我再来更新一下这篇博文~
以上所述就是小编给大家介绍的《编程小知识之 Lua split 函数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 函数式编程之数组的函数式编程
- 函数式编程 – 函数式编程如何影响您的编码风格?
- 纯函数:函数式编程入门
- 深入理解 Java 函数式编程,第 1 部分: 函数式编程思想概论
- 思想交融,Android中的函数式编程(2):什么是函数式编程
- 编程范式 —— 函数式编程入门
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
实战移动互联网营销
江礼坤 / 机械工业出版社 / 2016-1 / 79.00
移动互联网的兴起,又为企业带来了新的挑战与机遇!越来越多的人,看到了移动互联网的价值与前景,但是在具体操作时,移动互联网具体如何玩?企业如何向移动互联网转型?如何通过移动互联网做营销?等等一系列问题,接踵而至。虽然目前相关的资料和文章很多,但是都过于零散,让人看完后,还是无从下手。而本书旨在成为移动互联网营销领域标准的工具书、参考书,为大家呈现一个系统、全面的移动互联网营销体系。让大家从思维模式到......一起来看看 《实战移动互联网营销》 这本书的介绍吧!