新写了一个转中文大写金额的ASP函数

原创 2006年05月31日 17:44:00

'格式化中文金额的方法
'@ prmtType 为"A" 时表示返回带零的全字串,否则返回中文习惯的金额
'调用方法:FormatChineseMoney(30503.34,"")

Function FormatChineseMoney(prmtMoney,prmtType)
 dim strMoney,strMoneyLeft,strMoneyRight
 if IsNumeric(prmtMoney) then
  strMoney=FormatCurrency(prmtMoney,2,-1,0,0)
  dim regMoney
  Set regMoney = New RegExp   ' 创建正则表达式。
  regMoney.Pattern = "^[¥|/$]?[+|-]?(/d+)?(?:/.(/d{1,2}))?$"   ' 设置模式。
  regMoney.IgnoreCase = True   ' 设置是否区分大小写。
  regMoney.Global = True   ' 设置全程匹配。
  if regMoney.test(strMoney) then
   Set oMatches = regMoney.Execute(strMoney)
   Set oMatch = oMatches(0)
   strMoneyLeft=oMatch.SubMatches(0)
   strMoneyRight=oMatch.SubMatches(1)
   FormatChineseMoney=ReplaceMoneyLeft(oMatch.SubMatches(0),prmtType)&ReplaceMoneyRight(oMatch.SubMatches(1),prmtType)&"整"
  else
   FormatChineseMoney="所传金钱金额不合规则!"
  end if
 else
  FormatChineseMoney="所传金钱金额不是数字!"
 end if
end Function

Function ReplaceMoneyLeft(prmtMoney,prmtType)
 dim intLenMoney,aryK,aryW,aryN,intModI,sNum,sNumA,i
 intLenMoney=Len(prmtMoney)
 aryK=Array("","拾","佰","仟")
 aryW=Array("","元","万","亿")
 aryN=Array("零","壹","贰","叄","肆","伍","陆","柒","捌","玖")
 for i=1 to intLenMoney
  sNum=aryN(Mid(prmtMoney,intLenMoney-i+1,1))&aryK((i-1) Mod 4)&aryW(GetWYIndex(i))&sNum
  sNumA="<span class=""spanCNMoneyMoney""> "&aryN(Mid(prmtMoney,intLenMoney-i+1,1))&" </span>"&"<span class=""spanCNMoneyUnit""> "&aryK((i-1) Mod 4)&aryW(GetWYIndex(i))&" </span>"&sNumA
 next
 if prmtType="A" then
  ReplaceMoneyLeft=sNumA
 else
  ReplaceMoneyLeft=ReplaceCNZeroLeft(sNum)
 end if
End Function

Function ReplaceMoneyRight(prmtMoney,prmtType)
 dim intLenMoney,aryF,aryN,intModI,sNum,sNumA,i
 intLenMoney=Len(prmtMoney)
 aryF=Array("","角","分")
 aryN=Array("零","壹","贰","叄","肆","伍","陆","柒","捌","玖")
 for i=intLenMoney to 1 step -1
  sNum=aryN(Mid(prmtMoney,i,1))&aryF(i)&sNum
  'response.Write(i&prmtMoney&Mid(prmtMoney,i,1)&aryN(Mid(prmtMoney,i,1)))
  sNumA="<span class=""spanCNMoneyMoney""> "&aryN(Mid(prmtMoney,i,1))&" </span>"&"<span class=""spanCNMoneyUnit""> "&aryF(i)&" </span>"&sNumA
 next
 if prmtType="A" then
  ReplaceMoneyRight=sNumA
 else
  ReplaceMoneyRight=ReplaceCNZeroRight(sNum)
 end if
End Function

Function GetWYIndex(prmtIndex)
 if prmtIndex=1 then
  GetWYIndex=1
 elseif ((prmtIndex-5) mod 8)=0 then
  GetWYIndex=2
 elseif  ((prmtIndex-1) mod 8)=0 then
  GetWYIndex=3
 else
  GetWYIndex=0
 end if
End Function

Function ReplaceCNZeroLeft(prmtStrCNMoney)
 ReplaceCNZeroLeft=prmtStrCNMoney
 ReplaceCNZeroLeft=replace(ReplaceCNZeroLeft,"零仟","零")
 ReplaceCNZeroLeft=replace(ReplaceCNZeroLeft,"零佰","零")
 ReplaceCNZeroLeft=replace(ReplaceCNZeroLeft,"零拾","零")
 dim regExZero
 Set regExZero = New RegExp   ' 创建正则表达式。
 regExZero.IgnoreCase = True   ' 设置是否区分大小写。
 regExZero.Global = True   ' 设置全程匹配。
 regExZero.Pattern = "零+"
 ReplaceCNZeroLeft=regExZero.replace(ReplaceCNZeroLeft,"零")
 ReplaceCNZeroLeft=replace(ReplaceCNZeroLeft,"零万","万")
 ReplaceCNZeroLeft=replace(ReplaceCNZeroLeft,"零亿","亿")
 ReplaceCNZeroLeft=replace(ReplaceCNZeroLeft,"零元","元")
 ReplaceCNZeroLeft=replace(ReplaceCNZeroLeft,"亿万","亿零")
End Function

Function ReplaceCNZeroRight(prmtStrCNMoney)
 ReplaceCNZeroRight=prmtStrCNMoney
 ReplaceCNZeroRight=replace(ReplaceCNZeroRight,"零角","零")
 dim regExZero
 Set regExZero = New RegExp   ' 创建正则表达式。
 regExZero.IgnoreCase = True   ' 设置是否区分大小写。
 regExZero.Global = True   ' 设置全程匹配。
 regExZero.Pattern = "零+分"
 ReplaceCNZeroRight=regExZero.replace(ReplaceCNZeroRight,"")
End Function

JAVA科学计数法,金额数字,转换为中文大写字

java操作金额
  • wangyonglin1123
  • wangyonglin1123
  • 2016年04月28日 13:46
  • 1786

JAVA 数字转换为中文大写的转换

【转】 读入一个浮点数值,将其转化为中文金额的大写形式。 如123.45,转化为:壹佰贰拾叁元肆角伍分。 以下是各种情况要完善: 1. 当金额为整数,只表示整数部分,省略小数部分,并添加“整”字。如1...
  • abiao1011
  • abiao1011
  • 2013年08月09日 00:07
  • 2194

SQL人民币小写金额转大写

--1、人民币小写金额转大写(第一版) ==================================================================== -- Title:...
  • tlammon
  • tlammon
  • 2016年04月05日 22:03
  • 1461

java版-金额转大写(可处理千万亿,精确到分)

转自:http://605113068.iteye.com/blog/2049163 package test; import java.math.BigDecimal; /** ...
  • u011943172
  • u011943172
  • 2016年06月01日 11:08
  • 1521

将数字转为中文金额的大写方式(C++版)

/**   * 程序目的:   *   从命令行接收一个数,并将其转化为中文金额的大写方式(C++版)   * 例如 123.45 --> 壹佰贰拾叁元肆角伍分   * @author Lov...
  • u010944926
  • u010944926
  • 2014年03月08日 15:57
  • 3182

js转换金额为中文大写

js转换金额为中文大写: function changeMoneyToChinese(money){ var cnNums = new Array("零","壹","贰","叁","肆"...
  • gang_strong
  • gang_strong
  • 2016年11月02日 10:54
  • 3139

在fastreport里转换金额大小写

在fastreport的pascalscript里面我没有搞明白怎么调用sysutil
  • ddlucky
  • ddlucky
  • 2014年11月13日 15:48
  • 1442

C#人民币金额大写转换

人民币金额大小写转换,三行代码 //完善了一下查询到的方法,支持小数,保留2位小数 完善了一下查询到的方法,支持小数,保留2位小数 public string NumGetStr(double Nu...
  • CommandBaby
  • CommandBaby
  • 2015年11月28日 14:00
  • 2534

阿拉伯数字小写金额转换成中文大写金额C程序说明

阿拉伯数字小写金额转换成中文大写金额C程序说明 1、问题的提出      寒假帮同学交缴话费时,不经意间看到收据上同时有小写金额和大写金额,想想各种各样的票据诸如缴费收据、银行业务回单、商场销售凭...
  • hwmt2012
  • hwmt2012
  • 2014年07月09日 20:12
  • 2344

oracle里存储函数将金额数字转换成大写

CREATE OR REPLACE FUNCTION NUMBER_TO_CHINESE(P_NUM IN NUMBER DEFAULT NULL) RETURN NVARCHAR2 IS ...
  • u010509052
  • u010509052
  • 2016年06月17日 15:18
  • 1532
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:新写了一个转中文大写金额的ASP函数
举报原因:
原因补充:

(最多只允许输入30个字)