金额转换算法

类别:Asp 点击:0 评论:0 推荐:

无聊中,便写了段金额转换的代码,很糙,但还能用:“)


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim str As String
        str = Me.TextBox1.Text.Trim
        Dim isfs As Boolean
        If Left(str, 1) = "-" Then
            isfs = True
            str = str.Remove(0, 1)
        Else
            isfs = False
        End If
        Dim strpoint As String
        Dim point() As String
        Dim j As Int16
        Dim jj() As String
        Dim jjj As String
        jjj = ""
        If str.IndexOf(".") <> -1 Then
            point = Split(str, ".", -1, CompareMethod.Text)
            str = point(0)
            strpoint = point(1)
            ReDim jj(strpoint.Length - 1)
            For j = 0 To strpoint.Length - 1
                jj(j) = Left(strpoint, 1)
                strpoint = Right(strpoint, strpoint.Length - 1)
                jjj = jjj + convert(jj(j))
            Next
        End If
        Dim strcode As String
        strcode = ""
        While strcode.Length <= str.Length
            strcode = strcode & "2345" & "2346"
        End While
        strcode = "1" & strcode
        strcode = Left(strcode, str.Length)
        Dim i As Int16
        Dim a() As String
        Dim strcode1 As String
        Dim countstr As Int16
        Dim strcode2 As String
        countstr = strcode.Length
        ReDim a(strcode.Length - 1)
        For i = 0 To countstr - 1
            a(i) = Right(strcode, 1)
            strcode = Left(strcode, strcode.Length - 1)
            strcode1 = strcode1 & a(i)
            strcode2 = strcode2 & "," & Mid(str, i + 1, 1) & Mid(strcode1, i + 1, 1)
        Next
        strcode2 = Right(strcode2, strcode2.Length - 1)
        Dim newstr() As String
        newstr = Split(strcode2, ",", -1, CompareMethod.Text)
        Dim ii As Int16
        Dim laststr As String
        Dim strcode3 As String
        Dim leftstr As String
        Dim rightstr As String
        For ii = 0 To newstr.Length - 1
            strcode3 = newstr(ii)
            leftstr = Left(strcode3, 1)
            rightstr = Right(strcode3, 1)
            rightstr = Replace(rightstr, rightstr, convert2(rightstr))
            leftstr = Replace(leftstr, leftstr, convert(leftstr))
            If leftstr = "零" And (rightstr = "拾" Or rightstr = "佰" Or rightstr = "仟") Then
                rightstr = ""
            End If
            If leftstr = "零" And (rightstr = "万" Or rightstr = "亿") Then
                leftstr = ""
            End If
            strcode3 = leftstr & rightstr
            laststr = laststr & strcode3
        Next
        While laststr.IndexOf("佰零万") <> -1
            laststr = laststr.Replace("零万", "万")
        End While
        While laststr.IndexOf("仟零零万") <> -1
            laststr = laststr.Replace("零零万", "万")
        End While
        While laststr.IndexOf("零万") <> -1
            laststr = laststr.Replace("零万", "零")
        End While
        While laststr.IndexOf("零亿") <> -1
            laststr = laststr.Replace("零亿", "亿")
        End While
        While laststr.IndexOf("零零") <> -1
            laststr = laststr.Replace("零零", "零")
        End While
        While Right(laststr, 1) = "零"
            laststr = Left(laststr, laststr.Length - 1)
        End While
        If isfs = True Then
            laststr = "负" & laststr
        End If
        If jjj = "" Then
            TD2.InnerHtml = laststr
        Else
            If laststr = "" Then
                TD2.InnerHtml = "零点" & jjj
            Else
                TD2.InnerHtml = laststr & "点" & jjj
            End If
        End If

    End Sub

    Function convert(ByVal num As String)
        Select Case num
            Case "1"
                convert = "壹"
            Case "2"
                convert = "贰"
            Case "3"
                convert = "叁"
            Case "4"
                convert = "肆"
            Case "5"
                convert = "伍"
            Case "6"
                convert = "陆"
            Case "7"
                convert = "柒"
            Case "8"
                convert = "捌"
            Case "9"
                convert = "玖"
            Case "0"
                convert = "零"
        End Select
    End Function
   
    Function convert2(ByVal num As String)
        Select Case num
            Case "1"
                convert2 = ""
            Case "2"
                convert2 = "拾"
            Case "3"
                convert2 = "佰"
            Case "4"
                convert2 = "仟"
            Case "5"
                convert2 = "万"
            Case "6"
                convert2 = "亿"
        End Select
    End Function

本文地址:http://com.8s8s.com/it/it8066.htm