转大写金额

    技术2022-05-11  71

     

    大写金   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)