lua实现split和strip
摘要:根据lua的基础string库实现split和strip
背景:通过ngx.req.get_headers()["Cookie"]拿到的cookie发现是字符串需要分割的时候没找到相关函数,遂回过头来再看看字符串处理
目标:实现lua的字符串分割,以及去除字符串开头结尾的指定字符(默认空格),对的,就是python的split()和strip()
工具:借助lua的string库实现这2个功能
ps:有点吐槽lua的索引是从1开始,包括字符串和表,写起来不太顺手。
一.需要用到的string库
1.string.find(string, separator,index)
从索引位置index,对字符串string按照分隔符separator进行查找,遇到则返回第一个分割符的索引,未找到则返回nil
返回索引为2个值,当分隔符只有一位时,两个值一致,同时可以用两个变量接收
a, b = string.find(string, separator,index)
2.string.sub(string,indexA,indexB)
对字符串string进去截取,第一个索引位置为indexA,第二个索引位置为indexB
ok,接下来可以开整了
二.实现
1.split()
------------------------------------------------------------------------------------------------------------------------------------------------------
local function split(str,separator)
local str = tostring(str)
local separator = tostring(separator)
local strB, arrayIndex = 1, 1
local targetArray = {}
if (separator == nil)
then
return false
end
local condition = true
while (condition)
do
si, sd = string.find(str, separator, strB)
if (si)
then
targetArray[arrayIndex] = string.sub(str,strB,si - 1)
arrayIndex = arrayIndex + 1
strB = sd + 1
else
targetArray[arrayIndex] = string.sub(str,strB,string.len(str))
condition = false
end
end
return targetArray
end
------------------------------------------------------------------------------------------------------------------------------------------------------
2.strip()
------------------------------------------------------------------------------------------------------------------------------------------------------
function strip(str,del)
local str = tostring(str)
if (del)
then
del = tostring(del)
else
del = tostring(" ")
end
i, j = 1, string.len(str)
while (i<=string.len(str))
do
if (string.sub(str,i,i) ~= del)
then
stringB = i
i = string.len(str) + 1
else
i = i + 1
end
end
while (j > 0)
do
if (string.sub(str,j,j) ~= del)
then
stringE = j
j = 0
else
j = j - 1
end
end
newStr = string.sub(str,stringB,stringE)
return newStr
end
------------------------------------------------------------------------------------------------------------------------------------------------------
参考链接:https://blog.csdn.net/fightsyj/article/details/85057634
参考书籍:李明江《Nginx Lua开发实战》

浙公网安备 33010602011771号