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开发实战》

 

posted @ 2020-12-18 23:05  sky_kill  阅读(1534)  评论(0)    收藏  举报