首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

求一段小写金额转大写金额的代码。解决方案

2012-02-14 
求一段小写金额转大写金额的代码。求一段小写金额转大写金额的代码。[解决办法]Public Function ChineseNum(

求一段小写金额转大写金额的代码。
求一段小写金额转大写金额的代码。

[解决办法]
Public Function ChineseNum(ByVal Single_to As Decimal) As String
Dim Str_to As String
Dim PartStr() As String = { " ", " "}
Dim Part_L As String
Dim Part_B As String
Dim i As Integer
Dim Full As Boolean = False
Dim Zero As Boolean = False
Dim Delimiters As Char = CChar( ". ")

Str_to = Single_to

'拆分字符串
PartStr = Str_to.Split(Delimiters)
Str_to = " "

'整数部分转换
For i = 0 To PartStr(0).Length - 1
Select Case PartStr(0).Chars(i)
Case "0 "
If Zero = False Then
Zero = True
Else
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If

Case "1 "
If Zero = True Then
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "壹 ")
'Zero = False

Case "2 "
If Zero = True Then
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "贰 ")
'Zero = False
Case "3 "
If Zero = True Then
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "叁 ")
'Zero = False
Case "4 "
If Zero = True Then
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "肆 ")
'Zero = False
Case "5 "
If Zero = True Then
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "伍 ")
' Zero = False
Case "6 "
If Zero = True Then
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "陆 ")
'Zero = False
Case "7 "
If Zero = True Then


Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "柒 ")
'Zero = False
Case "8 "
Str_to = Str_to.Insert(Str_to.Length, "捌 ")
Zero = False
Case "9 "
If Zero = True Then
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Zero = False
'Str_to = Str_to.Insert(Str_to.Length, "零 ")
End If
Str_to = Str_to.Insert(Str_to.Length, "玖 ")
'Zero = False
End Select
Select Case -(i - PartStr(0).Length + 1)
Case 0
Str_to = Str_to.Insert(Str_to.Length, "元 ")
Case 1
If Zero = False Then
Str_to = Str_to.Insert(Str_to.Length, "拾 ")
End If
Case 2
If Zero = False Then
Str_to = Str_to.Insert(Str_to.Length, "佰 ")
End If
Case 3
If Zero = False Then
Str_to = Str_to.Insert(Str_to.Length, "仟 ")
End If
Case 4
'If Zero = False Then
Str_to = Str_to.Insert(Str_to.Length, "万 ")
Zero = False
'End If
Case 5
If Zero = False Then
Str_to = Str_to.Insert(Str_to.Length, "拾 ")
End If
Case 6
If Zero = False Then
Str_to = Str_to.Insert(Str_to.Length, "佰 ")
End If
Case 7
If Zero = False Then
Str_to = Str_to.Insert(Str_to.Length, "仟 ")
End If
Case 8
Str_to = Str_to.Insert(Str_to.Length, "亿 ")
Zero = False
Case 9
Str_to = Str_to.Insert(Str_to.Length, "拾 ")
End Select
Next
'小数部分转换
If PartStr.GetUpperBound(0) <> 0 Then
For i = 0 To PartStr(1).Length - 1
Select Case PartStr(1).Chars(i)
Case "0 "
Str_to = Str_to.Insert(Str_to.Length, "零 ")
Case "1 "
Str_to = Str_to.Insert(Str_to.Length, "壹 ")
Case "2 "
Str_to = Str_to.Insert(Str_to.Length, "贰 ")
Case "3 "
Str_to = Str_to.Insert(Str_to.Length, "叁 ")
Case "4 "
Str_to = Str_to.Insert(Str_to.Length, "肆 ")
Case "5 "
Str_to = Str_to.Insert(Str_to.Length, "伍 ")
Case "6 "
Str_to = Str_to.Insert(Str_to.Length, "陆 ")


Case "7 "
Str_to = Str_to.Insert(Str_to.Length, "柒 ")
Case "8 "
Str_to = Str_to.Insert(Str_to.Length, "捌 ")
Case "9 "
Str_to = Str_to.Insert(Str_to.Length, "玖 ")
End Select
If i = 0 Then
Str_to = Str_to.Insert(Str_to.Length, "角 ")
Else
Str_to = Str_to.Insert(Str_to.Length, "分 ")
Full = True
End If
Next
End If
If Not Full Then
Str_to = Str_to.Insert(Str_to.Length, "整 ")
End If
Return Str_to
End Function
[解决办法]
帮顶,楼上真有耐心,帮写这么长的代码.感动中
[解决办法]
水老大在FAQ中有一个详细的转换类,可以去看一下


[解决办法]
转载VB.NET中写的一个类。

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
[解决办法]
都是强人 来学习的
[解决办法]
http://blog.csdn.net/jxufewbt/archive/2007/04/25/1584686.aspx

热点排行