转
大写金
额
Public Class rmb
Public Function ConvertSum(ByVal str As String) As String
If Not IsPositveDecimal(str) Then Return "输入的不是正数字!"
If (Double.Parse(str) > 999999999999.99) Then Return "数字太大,无法换算,请输入一万亿元以下的金额"
Dim ch() As Char = New Char(1) {}
ch(0) = "."c '小数点
Dim splitstr() As String = Nothing '定义按小数点分割后的字符串数组
splitstr = str.Split(ch(0)) '按小数点分割字符串
If (splitstr.Length = 1) Then '只有整数部分
Return ConvertData(str) + "圆整"
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
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) + "佰"
Case "仟零"
rstr = rstr.Substring(0, strlen - 2) + "仟"
Case ("萬零")
rstr = rstr.Substring(0, strlen - 2) + "萬"
Case "億零"
rstr = rstr.Substring(0, strlen - 2) + "億"
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)
Case 2
rstr = Convert2Digit(str)
Case 3
rstr = Convert3Digit(str)
Case 4
rstr = Convert4Digit(str)
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 = "零"
Case "1"
ccstr = "壹"
Case "2"
ccstr = "贰"
Case "3"
ccstr = "叁"
Case "4"
ccstr = "肆"
Case "5"
ccstr = "伍"
Case "6"
ccstr = "陆"
Case "7"
ccstr = "柒"
Case "8"
ccstr = "捌"
Case "9"
ccstr = "玖"
End Select
Return (ccstr)
End Function
End Class