|
- -- 扩展string的一些功能
-
- function string.htmlspecialchars(input)
- for k, v in pairs(string._htmlspecialchars_set) do
- input = string.gsub(input, k, v)
- end
- return input
- end
-
- string._htmlspecialchars_set = {}
- string._htmlspecialchars_set["&"] = "&"
- string._htmlspecialchars_set["\""] = """
- string._htmlspecialchars_set["'"] = "'"
- string._htmlspecialchars_set["<"] = "<"
- string._htmlspecialchars_set[">"] = ">"
-
- function string.htmlspecialcharsDecode(input)
- for k, v in pairs(string._htmlspecialchars_set) do
- input = string.gsub(input, v, k)
- end
- return input
- end
-
- function string.nl2br(input)
- return string.gsub(input, "\n", "<br />")
- end
-
- function string.text2html(input)
- input = string.gsub(input, "\t", " ")
- input = string.htmlspecialchars(input)
- input = string.gsub(input, " ", " ")
- input = string.nl2br(input)
- return input
- end
-
- function string.split(str, delimiter)
- str = tostring(str)
- delimiter = tostring(delimiter)
- if (delimiter=='') then return false end
- local pos,arr = 0, {}
- -- for each divider found
- for st,sp in function() return string.find(str, delimiter, pos, true) end do
- table.insert(arr, string.sub(str, pos, st - 1))
- pos = sp + 1
- end
- table.insert(arr, string.sub(str, pos))
- return arr
- end
-
- function string.ltrim(str)
- return string.gsub(str, "^[ \t\n\r]+", "")
- end
-
- function string.rtrim(str)
- return string.gsub(str, "[ \t\n\r]+$", "")
- end
-
- function string.trim(str)
- str = string.gsub(str, "^[ \t\n\r]+", "")
- return string.gsub(str, "[ \t\n\r]+$", "")
- end
-
- function string.ucfirst(str)
- return string.upper(string.sub(str, 1, 1)) .. string.sub(str, 2)
- end
-
- local function urlencodeChar(char)
- return "%" .. string.format("%02X", string.byte(char))
- end
-
- function string.urlencode(str)
- -- convert line endings
- str = string.gsub(tostring(str), "\n", "\r\n")
- -- escape all characters but alphanumeric, '.' and '-'
- str = string.gsub(str, "([^%w%.%- ])", urlencodeChar)
- -- convert spaces to "+" symbols
- return string.gsub(str, " ", "+")
- end
-
- function string.urldecode(str)
- str = string.gsub (str, "+", " ")
- str = string.gsub (str, "%%(%x%x)", function(h) return string.char(tonum(h,16)) end)
- str = string.gsub (str, "\r\n", "\n")
- return str
- end
-
- function string.utf8len(str)
- local len = #str
- local left = len
- local cnt = 0
- local arr = {0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc}
- while left ~= 0 do
- local tmp = string.byte(str, -left)
- local i = #arr
- while arr[i] do
- if tmp >= arr[i] then
- left = left - i
- break
- end
- i = i - 1
- end
- cnt = cnt + 1
- end
- return cnt
- end
-
- function string.formatNumberThousands(num)
- local formatted = tostring(tonum(num))
- local k
- while true do
- formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
- if k == 0 then break end
- end
- return formatted
- end
-
- -- 把文件名分割成目录名和文件名
- -- 返回pathName , baseName , ext
- function string.splitFilename(filename)
- local reverseFile = string.reverse(filename);
- local pos = string.find(reverseFile , "[/\\]");
- local dotPos = string.find(reverseFile , "%.");
- return string.sub(filename , 1 , #filename - pos) , string.sub(filename , #filename - pos + 2) , string.sub(filename , #filename - dotPos + 2);
- end
-
- -- 是否是某字符串结束
- function string.endsWith(filename , ends)
- return string.sub(filename , - #ends) == ends;
- end
-
- -- 是否是以字符串开头
- function string.startsWith(filename , starts)
- return string.sub(filename , 1 , #starts) == starts;
- end
-
- -- 转换到lua源码格式的字符串
- function string.toLuaString(str)
- local buffer = {"\""};
- for i = 1 , string.len(str) do
- table.insert(buffer , [[\]] .. string.byte(str , i));
- end
- table.insert(buffer , "\"");
- return table.concat(buffer);
- end;
|