lua 字符串扩展处理类

类代码
local StringUtil = {}

StringUtil.__index = StringUtil

function StringUtil:new() 
	local self = {}
	setmetatable(self, StringUtil)
	return self
end

function StringUtil:trim(s) 
	return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end

function StringUtil:unescape(s) 
	s = string.gsub(s, "+", " ")
	s = string.gsub(s, "%%(%x%x)", function(h)
		return string.char(tonumber(h, 16))	
	end)
	return s
end

function StringUtil:escape(s) 
	s = string.gsub(s, "([$=+%c])", function(c)
		return string.format("%%%02X", string.byte(c))	
	end)
	s = string.gsub(s, " ", "+")
	return s
end

function StringUtil:encode(t) 
	local s = ""
	for k, v in pairs(t) do
		s = s .. "&" .. self:escape(k) .. "=" .. self:escape(v)
	end

	return string.sub(s, 2)
end

function StringUtil:decode(s)
	local t = {}
	for name, value in string.gfind(s, "([^&=]+)=([^&=]+)") do
		name = self:unescape(name)
		value = self:unescape(value)
		t[name] = value
	end
	return t
end

return StringUtil



调用方式
local StringUtil = require 'StringUtil'

local a = " aa "
local util = StringUtil:new()

print(util:trim(a))

t = {name = "aaa", query = "a+b = c", q = "yes or no"}
a = (util:decode(util:encode(t)))
for k, v in pairs(a) do
	print(k, v)
end

你可能感兴趣的:(lua)