转大写金额

 

大写金
 
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值