function GameFunCtion.NumberToString(szNum)
---阿拉伯数字转中文大写
local szChMoney = ""
local iLen = 0
local iNum = 0
local iAddZero = 0
local hzUnit = {"", "十", "百", "千", "万", "十", "百", "千", "亿","十", "百", "千", "万", "十", "百", "千"}
local hzNum = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}
if nil == tonumber(szNum) then
return tostring(szNum)
end
iLen =string.len(szNum)
if iLen > 10 or iLen == 0 or tonumber(szNum) < 0 then
return tostring(szNum)
end
for i = 1, iLen do
iNum = string.sub(szNum,i,i)
if iNum == 0 and i ~= iLen then
iAddZero = iAddZero + 1
else
if iAddZero > 0 then
szChMoney = szChMoney..hzNum[1]
end
szChMoney = szChMoney..hzNum[iNum + 1] --//转换为相应的数字
iAddZero = 0
end
if (iAddZero < 4) and (0 == (iLen - i) % 4 or 0 ~= tonumber(iNum)) then
szChMoney = szChMoney..hzUnit[iLen-i+1]
end
end
local function removeZero(num)
--去掉末尾多余的 零
num = tostring(num)
local szLen = string.len(num)
local zero_num = 0
for i = szLen, 1, -3 do
szNum = string.sub(num,i-2,i)
if szNum == hzNum[1] then
zero_num = zero_num + 1
else
break
end
end
num = string.sub(num, 1,szLen - zero_num * 3)
szNum = string.sub(num, 1,6)
--- 开头的 "一十" 转成 "十" , 贴近人的读法
if szNum == hzNum[2]..hzUnit[2] then
num = string.sub(num, 4, string.len(num))
end
return num
end
return removeZero(szChMoney)
end
字符串中提取中文数字英文,删除特殊字符
function GameFunCtion.filter_spec_chars(s)--保留中文数字英文,删除特殊字符
local ss = {}
local k = 1
while true do
if k > #s then break end
local c = string.byte(s,k)
if not c then break end
if c<192 then
if (c>=48 and c<=57) or (c>= 65 and c<=90) or (c>=97 and c<=122) then
table.insert(ss, string.char(c))
end
k = k + 1
elseif c<224 then
k = k + 2
elseif c<240 then
if c>=228 and c<=233 then
local c1 = string.byte(s,k+1)
local c2 = string.byte(s,k+2)
if c1 and c2 then
local a1,a2,a3,a4 = 128,191,128,191
if c == 228 then a1 = 184
elseif c == 233 then a2,a4 = 190,c1 ~= 190 and 191 or 165
end
if c1>=a1 and c1<=a2 and c2>=a3 and c2<=a4 then
table.insert(ss, string.char(c,c1,c2))
end
end
end
k = k + 3
elseif c<248 then
k = k + 4
elseif c<252 then
k = k + 5
elseif c<254 then
k = k + 6
end
end
return table.concat(ss)
end