新写了一个转中文大写金额的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

相关文章推荐

asp.net 写一个RMB金额大写转换器(源码)

using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste...

SQL Server中文大写金额转化函数

CREATE FUNCTION usf_ChineseCost 02( 03 @Cost float04) 05RETURNS varchar(50) 06AS

excel金額轉大寫函數

  • 2009年03月10日 12:19
  • 33KB
  • 下载

金额数字转中文大写

金额数字转中文大写 http://www.blogjava.net/fastunit/archive/2008/03/25/188537.html 处理能力: 整数部分:...
  • cation
  • cation
  • 2011年08月31日 16:41
  • 1813

2012向全国人民拜年了!!![阿拉伯数字转中文大写-金额]

首先给论坛全体拜年了给全国人民拜年了祝六亲眷属皆安乐肚大能容笑口常开!!! ------------------------------------------------------------- ...

Java金额数字转中文大写

package com.mcp.util; import java.math.BigDecimal; /** * 数字转换为汉语中人民币的大写 * */ public class Numbe...
  • shi0299
  • shi0299
  • 2016年06月13日 15:31
  • 235

java金额转中文大写

package test;   import java.math.BigDecimal; import java.text.DecimalFormat;   public class C...
  • zpf336
  • zpf336
  • 2014年09月02日 22:25
  • 417
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:新写了一个转中文大写金额的ASP函数
举报原因:
原因补充:

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