一个数字转换为中文的函数

转载 2006年06月01日 10:08:00

一个数字转换为中文的函数

<%
'格式化中文金额的方法
'@ prmtType 为"A" 时表示返回带零的全字串,否则返回中文习惯的金额
'调用方法:FormatChineseMoney(30503.34,"")
response.write 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


%>

vba中中文数字和阿拉伯数字转换,也说下sub求面积的问题

vba中,如何将数字1转换成中文的一?又比如,如何将数字2转换成中文的二? 答案: 如果只是简单地转换一位数字,下面的公式可以很快搞定(假设数据存放在A1),如果是多位数字转换,这个公式就不适用;...
  • ouxuxuan0620
  • ouxuxuan0620
  • 2015年12月24日 18:42
  • 698

编写函数进行日期转换;键输入的大写的日期转换成阿拉伯数字的形式

用winfrom实现的!!!! Dictionary doct = new Dictionary();        private void button1_Click(object sen...
  • shang_111111
  • shang_111111
  • 2012年09月11日 22:10
  • 597

将整数n这个数字转换为对应的字符串

题目:实现一个函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中。题目分析:    对于这一个问题,我们首先能够联想到字符在计算机存储是以自身的ASCII码存...
  • ttyue_123
  • ttyue_123
  • 2016年08月09日 21:41
  • 769

SAP阿拉伯数字转中文大写函数

已经不知道是哪个高手写的函数了,名字忘了,只留下了函数。 此函数会经常用在FICO模块的会计凭证打印方面,所以说还是比较有用的。只需新建一个函数组,并创建一个函数,并将代码拷贝进程序当中即可。  ...
  • ioumm2008
  • ioumm2008
  • 2014年02月18日 17:20
  • 655

C语言:实现一个函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中

#include char itoa(int n,char s[]) {      int i = 0;      s[i] = n;      return s[i];  } int main...
  • hanjing_1995
  • hanjing_1995
  • 2016年05月30日 17:14
  • 281

数字转换为中文大写

想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2016年08月04日 12:57
  • 209

CodeIgniter 数字转换为中文

if ( ! defined(BASEPATH)) exit(No direct script access allowed);/** * CodeIgniter的人民币金额辅助函数 * 其中num2...
  • drlan1986
  • drlan1986
  • 2010年01月26日 17:12
  • 220

数字(int型范围内正整数)和中文的相互转换

数字(int型范围内正整数)和中文的相互转换
  • pjz161026
  • pjz161026
  • 2017年02月13日 15:13
  • 737

钱币数字转换为中文

public string NumToChs(decimal a_money)        ...{            try            ...{                st...
  • tigerleq
  • tigerleq
  • 2008年02月28日 13:50
  • 456

将数字转换为中文

import java.io.BufferedReader;   3.import java.io.IOException;   4.import java.io.InputStreamRea...
  • HarderXin
  • HarderXin
  • 2012年02月23日 09:14
  • 490
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个数字转换为中文的函数
举报原因:
原因补充:

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