金额转换算法

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航