您的位置:首页 > 其它

将人民币的数字表示转化成大写表示

2007-06-05 13:21 549 查看
[align=left]'将人民币的数字表示转化成大写表示(VB.NET版) [/align]
[align=left]'本代码参考chenyu001 [/align]
[align=left]'将人民币的数字表示转化成大写表示(C#版) [/align]
[align=left]'http://dev.csdn.net/article/28/28977.shtm[/align]
[align=left]'改的不多,但愿这些改动没让原作者发怒[/align]
[align=left]Public Class ChineseNum[/align]
[align=left] '输入字串[/align]
[align=left] Private _InputString As String[/align]
[align=left] '输出字串,如果无效则输出错误信息[/align]
[align=left] Private _OutString As String[/align]
[align=left] '判断输出字串是否有效[/align]
[align=left] Private _Valiad As Boolean[/align]
[align=left] [/align]
[align=left] Public WriteOnly Property InputString() As String[/align]
[align=left] Set(ByVal Value As String)[/align]
[align=left] _InputString = Value[/align]
[align=left] ConvertToChineseNum()[/align]
[align=left] End Set[/align]
[align=left] End Property[/align]
[align=left] Public ReadOnly Property Valiad() As Boolean[/align]
[align=left] Get[/align]
[align=left] Return _Valiad[/align]
[align=left] End Get[/align]
[align=left] End Property[/align]
[align=left] Public ReadOnly Property OutString() As String[/align]
[align=left] Get[/align]
[align=left] Return _OutString[/align]
[align=left] End Get[/align]
[align=left] End Property[/align]
[align=left] Private Sub ConvertToChineseNum()[/align]
[align=left] Dim numList As String = "零壹贰叁肆伍陆柒捌玖"[/align]
[align=left] Dim rmbList As String = "分角元拾佰仟万拾佰仟亿拾佰仟万"[/align]
[align=left] Dim number As Double = 0[/align]
[align=left] Dim tempOutString As String[/align]
[align=left] Try[/align]
[align=left] number = Double.Parse(Me._InputString)[/align]
[align=left] Catch ex As SystemException[/align]
[align=left] Me._OutString = "传入参数非数字!"[/align]
[align=left] Me._Valiad = False[/align]
[align=left] Return[/align]
[align=left] End Try[/align]
[align=left] If number > 9999999999999.99 Then[/align]
[align=left] Me._Valiad = False[/align]
[align=left] Me._OutString = "超出范围的人民币值"[/align]
[align=left] Return[/align]
[align=left] End If[/align]
[align=left] Dim tempNumberString As String = Convert.ToInt64(number * 100).ToString()[/align]
[align=left] Dim tempNmberLength As Integer = tempNumberString.Length[/align]
[align=left] Dim i As Integer = 0[/align]
[align=left] While i < tempNmberLength[/align]
[align=left] Dim oneNumber As Integer = Int32.Parse(tempNumberString.Substring(i, 1))[/align]
[align=left] Dim oneNumberChar As String = numList.Substring(oneNumber, 1)[/align]
[align=left] Dim oneNumberUnit As String = rmbList.Substring(tempNmberLength - i - 1, 1)[/align]
[align=left] If Not (oneNumberChar = "零") Then[/align]
[align=left] tempOutString += oneNumberChar + oneNumberUnit[/align]
[align=left] Else[/align]
[align=left] If oneNumberUnit = "亿" OrElse oneNumberUnit = "万" OrElse oneNumberUnit = "元" OrElse oneNumberUnit = "零" Then[/align]
[align=left] While tempOutString.EndsWith("零")[/align]
[align=left] tempOutString = tempOutString.Substring(0, tempOutString.Length - 1)[/align]
[align=left] End While[/align]
[align=left] End If[/align]
[align=left] If oneNumberUnit = "亿" OrElse (oneNumberUnit = "万" AndAlso Not tempOutString.EndsWith("亿")) OrElse oneNumberUnit = "元" Then[/align]
[align=left] tempOutString += oneNumberUnit[/align]
[align=left] Else[/align]
[align=left] Dim tempEnd As Boolean = tempOutString.EndsWith("亿")[/align]
[align=left] Dim zeroEnd As Boolean = tempOutString.EndsWith("零")[/align]
[align=left] If tempOutString.Length > 1 Then[/align]
[align=left] Dim zeroStart As Boolean = tempOutString.Substring(tempOutString.Length - 2, 2).StartsWith("零")[/align]
[align=left] If Not zeroEnd AndAlso (zeroStart OrElse Not tempEnd) Then[/align]
[align=left] tempOutString += oneNumberChar[/align]
[align=left] End If[/align]
[align=left] Else[/align]
[align=left] If Not zeroEnd AndAlso Not tempEnd Then[/align]
[align=left] tempOutString += oneNumberChar[/align]
[align=left] End If[/align]
[align=left] End If[/align]
[align=left] End If[/align]
[align=left] End If[/align]
[align=left] i += 1[/align]
[align=left] End While[/align]
[align=left] While tempOutString.EndsWith("零")[/align]
[align=left] tempOutString = tempOutString.Substring(0, tempOutString.Length - 1)[/align]
[align=left] End While[/align]
[align=left] While tempOutString.EndsWith("元")[/align]
[align=left] tempOutString = tempOutString + "整"[/align]
[align=left] End While[/align]
[align=left] Me._OutString = tempOutString[/align]
[align=left] Me._Valiad = True[/align]
[align=left] End Sub[/align]
End Class

[align=left] '则试方法[/align]
[align=left] Dim m As New ChineseNum[/align]
[align=left] Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click[/align]
[align=left] m.InputString = Me.TextBox1.Text[/align]
[align=left] If m.Valiad Then[/align]
[align=left] Me.TextBox2.Text = m.OutString[/align]
[align=left] Me.TextBox3.Text = String.Empty[/align]
[align=left] Else[/align]
[align=left] Me.TextBox2.Text = String.Empty[/align]
[align=left] Me.TextBox3.Text = m.OutString[/align]
[align=left] End If[/align]
End Sub
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: