VB程序设计:将阿拉伯数字转换成汉字数字

具体要求:(1)设计程序:在文本框内输入数字,则起上方的标签内自动显示起对应的汉字数字。(2)由于采用的汉字较少,可以预先将起都存在字符串总共。(3)为了实现“输入数字几... 具体要求:
(1)设计程序:在文本框内输入数字,则起上方的标签内自动显示起对应的汉字数字。
(2)由于采用 的汉字较少,可以预先将起都存在字符串总共。
(3)为了实现“输入数字几显示汉字”,可以采用文本框的keypress时间。
(4)尽量采用调用VB提供字符串函数。如Cstr、Len、Mid
展开
 我来答
farfamed
2009-06-23 · TA获得超过1039个赞
知道小有建树答主
回答量:520
采纳率:0%
帮助的人:1010万
展开全部
给你一个现成的,加两个控件,一个Label1,一个Text1:

Private Sub Form_Load()
'初始化设置
Text1.MaxLength = 16
Text1.Text = ""
Label1.Caption = ""
Label1.AutoSize = True
Label1.BorderStyle = 1
Label1.FontSize = 18
End Sub

Private Sub Text1_Change()
'调用转换子过程
Label1.Caption = CChinese(Text1.Text)
End Sub

Private Function CChinese(StrEng As String) As String
'验证数据
If Not IsNumeric(StrEng) Then
If Trim(StrEng) <> "" Then MsgBox "无效的数字"
CChinese = ""
Exit Function
End If
'定义变量
Dim intLen As Integer, intCounter As Integer
Dim strCh As String, strTempCh As String
Dim strSeqCh1 As String, strSeqCh2 As String
Dim strEng2Ch As String
strEng2Ch = "零壹贰叁肆伍陆柒捌玖"
strSeqCh1 = " 拾佰仟 拾佰仟 拾佰仟 拾佰仟"
strSeqCh2 = " 万亿兆"
'转换为表示数值的字符串
StrEng = CStr(CDec(StrEng))
'记录数字的长度
intLen = Len(StrEng)
'转换为汉字
For intCounter = 1 To intLen
'返回数字对应的汉字
strTempCh = Mid(strEng2Ch, Mid(StrEng, intCounter, 1) + 1, 1)
'若某位是零
If strTempCh = "零" And intLen <> 1 Then
'若后一个也是零,或零出现在倒数第1、5、9、13等位,则不显示汉字“零”
If Mid(StrEng, intCounter + 1, 1) = "0" Or (intLen - intCounter + 1) Mod 4 = 1 Then strTempCh = ""
Else
strTempCh = strTempCh & Trim(Mid(strSeqCh1, intLen - intCounter + 1, 1))
End If
'对于出现在倒数第1、5、9、13等位的数字
If (intLen - intCounter + 1) Mod 4 = 1 Then
'添加位" 万亿兆"
strTempCh = strTempCh & Trim(Mid(strSeqCh2, (intLen - intCounter) \ 4 + 1, 1))
End If
'组成汉字表达式
strCh = strCh & Trim(strTempCh)
Next
CChinese = strCh
End Function
答疑解惑x

2015-10-24 · TA获得超过38.4万个赞
知道顶级答主
回答量:8.1万
采纳率:88%
帮助的人:3.5亿
展开全部
  准备Text1控件,和Label1控件

  Private Sub Form_Load()
  Text1 = ""
  Label1.AutoSize = True
  End Sub

  Private Sub Text1_Change()
  Dim strCh As String, temp As String, i As Integer
  strCh = "零一二三四五六七八九"
  temp = ""
  For i = 1 To Len(Text1)
  temp = temp & Mid(strCh, CInt(Mid(Text1, i, 1)) + 1, 1)
  Next
  Label1.Caption = temp
  End Sub

  Private Sub Text1_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
  Case vbKeyBack
  Text1 = ""
  Case Is < Asc("0")
  KeyAscii = 0
  Case Is > Asc("9")
  KeyAscii = 0
  End Select
  End Sub
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
破梦之魇
2009-06-23 · TA获得超过456个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:336万
展开全部
这不就是个选择的问题
在文本框的keypress事件里逐个取字符分析根据不同的字符选择输出不用的中文就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流年憂傷YY
2018-04-29
知道答主
回答量:1
采纳率:0%
帮助的人:867
展开全部
准备label,textbox控件。
textbox2.text=mid("零……玖",textbox.text+1,1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式