Public Class ConvertSum '' 转换数字金额主函数(包括小数) ''' ''' 数字字符串 ''' 转换成中文大写后的字符串或者出错信息提示字符串 Public Function ConvertSum(ByVal str As String) As String If IsPositveDecimal(str) <> True Then Return "输入的不是正数字!" End If If (Double.Parse(str) > 999999999999.99) Then Return "数字太大,无法换算,请输入一万亿元以下的金额" End If Dim ch(0 To 1) As Char ch(0) = "." '小数点 Dim splitstr() As String = Nothing '定义按小数点分割后的字符串数组 splitstr = str.Split(ch(0)) '按小数点分割字符串 If (splitstr.Length = 1) Then ''只有整数部分 Return ConvertData(str) + "元整" ElseIf splitstr(1) = 0 Then Return ConvertData(splitstr(0)) + "元整" Else ''有小数部分 Dim rstr As String rstr = ConvertData(splitstr(0)) + "元" ''转换整数部分 rstr += ConvertXiaoShu(splitstr(1)) ''转换小数部分 Return rstr End If End Function ''' ''' 判断是否是正数字字符串 ''' ''' 判断字符串 ''' 如果是数字,返回true,否则返回false Public Function IsPositveDecimal(ByVal str As String) As Boolean Dim d As Decimal Try d = Decimal.Parse(str) Catch ex As Exception Return False End Try If (d > 0) Then Return True Else Return False End If End Function ''' ''' 转换数字(整数) ''' ''' 需要转换的整数数字字符串 ''' 转换成中文大写后的字符串 Public Function ConvertData(ByVal str As String) As String Dim tmpstr As String = "" Dim rstr As String = "" Dim strlen As Integer = str.Length If strlen <= 4 Then ''数字长度小于四位 rstr = ConvertDigit(str) Else If (strlen <= 8) Then ''数字长度大于四位,小于八位 tmpstr = str.Substring(strlen - 4, 4) ''先截取最后四位数字 rstr = ConvertDigit(tmpstr) ''转换最后四位数字 tmpstr = str.Substring(0, strlen - 4) ''截取其余数字 ''将两次转换的数字加上萬后相连接 rstr = String.Concat(ConvertDigit(tmpstr) + "萬", rstr) rstr = rstr.Replace("零萬", "萬") rstr = rstr.Replace("零零", "零") Else If (strlen <= 12) Then ''数字长度大于八位,小于十二位 tmpstr = str.Substring(strlen - 4, 4) ''先截取最后四位数字 rstr = ConvertDigit(tmpstr) ''转换最后四位数字 tmpstr = str.Substring(strlen - 8, 4) ''再截取四位数字 rstr = String.Concat(ConvertDigit(tmpstr) + "萬", rstr) tmpstr = str.Substring(0, strlen - 8) rstr = String.Concat(ConvertDigit(tmpstr) + "億", rstr) rstr = rstr.Replace("零億", "億") rstr = rstr.Replace("零萬", "零") rstr = rstr.Replace("零零", "零") rstr = rstr.Replace("零零", "零") End If End If End If strlen = rstr.Length If (strlen >= 2) Then Select Case rstr.Substring(strlen - 2, 2) Case "佰零" : rstr = rstr.Substring(0, strlen - 2) + "佰" : Exit Select Case "仟零" : rstr = rstr.Substring(0, strlen - 2) + "仟" : Exit Select Case "萬零" : rstr = rstr.Substring(0, strlen - 2) + "萬" : Exit Select Case "億零" : rstr = rstr.Substring(0, strlen - 2) + "億" : Exit Select End Select End If Return rstr End Function ''' ''' 转换数字(小数部分) ''' ''' 需要转换的小数部分数字字符串 ''' 转换成中文大写后的字符串 Public Function ConvertXiaoShu(ByVal str As String) As String Dim strlen As Integer = str.Length Dim rstr As String If strlen = 1 Then rstr = ConvertChinese(str) + "角" Return rstr Else Dim tmpstr As String = str.Substring(0, 1) rstr = ConvertChinese(tmpstr) + "角" tmpstr = str.Substring(1, 1) rstr += ConvertChinese(tmpstr) + "分" rstr = rstr.Replace("零分", "") rstr = rstr.Replace("零角", "") Return rstr End If End Function ''' ''' 转换数字 ''' ''' 转换的字符串(四位以内) ''' Public Function ConvertDigit(ByVal str As String) As String Dim strlen As Integer = str.Length Dim rstr As String = "" Select Case (strlen) Case 1 : rstr = ConvertChinese(str) : Exit Select Case 2 : rstr = Convert2Digit(str) : Exit Select Case 3 : rstr = Convert3Digit(str) : Exit Select Case 4 : rstr = Convert4Digit(str) : Exit Select End Select rstr = rstr.Replace("拾零", "拾") strlen = rstr.Length Return rstr End Function ''' ''' 转换四位数字 ''' Public Function Convert4Digit(ByVal str As String) As String Dim str1 As String = str.Substring(0, 1) Dim str2 As String = str.Substring(1, 1) Dim str3 As String = str.Substring(2, 1) Dim str4 As String = str.Substring(3, 1) Dim rstring As String = "" rstring += ConvertChinese(str1) + "仟" rstring += ConvertChinese(str2) + "佰" rstring += ConvertChinese(str3) + "拾" rstring += ConvertChinese(str4) rstring = rstring.Replace("零仟", "零") rstring = rstring.Replace("零佰", "零") rstring = rstring.Replace("零拾", "零") rstring = rstring.Replace("零零", "零") rstring = rstring.Replace("零零", "零") rstring = rstring.Replace("零零", "零") Return rstring End Function ''' ''' 转换三位数字 ''' Public Function Convert3Digit(ByVal str As String) As String Dim str1 As String = str.Substring(0, 1) Dim str2 As String = str.Substring(1, 1) Dim str3 As String = str.Substring(2, 1) Dim rstring As String = "" rstring += ConvertChinese(str1) + "佰" rstring += ConvertChinese(str2) + "拾" rstring += ConvertChinese(str3) rstring = rstring.Replace("零佰", "零") rstring = rstring.Replace("零拾", "零") rstring = rstring.Replace("零零", "零") rstring = rstring.Replace("零零", "零") Return rstring End Function ''' ''' 转换二位数字 ''' Public Function Convert2Digit(ByVal str As String) As String Dim str1 As String = str.Substring(0, 1) Dim str2 As String = str.Substring(1, 1) Dim rstring As String = "" rstring += ConvertChinese(str1) + "拾" rstring += ConvertChinese(str2) rstring = rstring.Replace("零拾", "零") rstring = rstring.Replace("零零", "零") Return rstring End Function ''' ''' 将一位数字转换成中文大写数字 ''' Public Function ConvertChinese(ByVal str As String) As String ''"零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分" Dim ccstr As String = "" Select Case str Case "0" : ccstr = "零" : Exit Select Case "1" : ccstr = "壹" : Exit Select Case "2" : ccstr = "贰" : Exit Select Case "3" : ccstr = "叁" : Exit Select Case "4" : ccstr = "肆" : Exit Select Case "5" : ccstr = "伍" : Exit Select Case "6" : ccstr = "陆" : Exit Select Case "7" : ccstr = "柒" : Exit Select Case "8" : ccstr = "捌" : Exit Select Case "9" : ccstr = "玖" : Exit Select End Select Return (ccstr) End Function End Class