VB textbox字符出现次数并排序

新建一个vb窗体加入两个textbox分别是text1和text2加入一个Command1在text1中输入如下数据王小虎李小冰林小明王小虎李小冰林小明王小虎王小虎杨东点... 新建一个vb窗体

加入两个textbox 分别是text1和text2

加入一个Command1

在text1中输入如下数据

王小虎 李小冰 林小明 王小虎 李小冰 林小明

王小虎 王小虎 杨东

点击Command1时

text2对text1输入的字符进行判断出现次数并排序

text2内容如下显示

出现4次:王小虎 '换行
出现2次:李小冰 林小明 '换行
出现1次:杨东

应该如何写代码呢.?
代码有错啊?验证结果:出现3次有:王小虎
出现2次有:李小冰
出现2次有:林小明
出现1次有:
出现1次有:

王小虎
出现1次有:杨东
为什么出现这样的结果?有哪位高手帮忙修改一下,
展开
 我来答
linhai107
2010-05-09
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
Private Type Na
Name As String
Num As Integer
End Type

Dim Names() As Na

Private Sub Command1_Click()
Dim i As Long
Dim j As Long
Dim n As Long

Dim TempStr As String
Dim TempName As String

Text1.Text = Trim(Text1.Text) '去除首位的空格
n = 1

Do While n <= Len(Text1.Text)
TempStr = Mid(Text1.Text, n, 1)
If TempStr <> " " Then
TempName = TempName & TempStr
GoTo NextStr
Else

For j = 0 To i - 1
If Names(j).Name = TempName Then
Names(j).Num = Names(j).Num + 1
TempName = ""
GoTo NextStr
End If
Next

ReDim Preserve Names(i)
Names(i).Name = TempName
Names(i).Num = Names(i).Num + 1
TempName = ""
i = i + 1

End If

NextStr:

n = n + 1

Loop
'处理最后一个名字
For j = 0 To i - 1
If Names(j).Name = TempName Then
Names(j).Num = Names(j).Num + 1
TempName = ""
GoTo GoEnd
End If
Next

ReDim Preserve Names(i)
Names(i).Name = TempName
Names(i).Num = Names(i).Num + 1
TempName = ""
i = i + 1

GoEnd:

For j = 0 To i - 1
Text2 = Text2 & Names(j).Name & ":" & Names(j).Num & vbCrLf
Next

End Sub

Private Sub Form_Load()
Text1.Text = "王小虎 李小冰 林小明 王小虎 李小冰 林小明 王小虎 王小虎 杨东"
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式