
VB程序问题 在文本框输入一个英文句子,统计单词出现的个数
书上的做法算不出来,下面贴出做法PrivateSubCommand1_Click()DimstrAsStringstr=Trim(Text1)n=0DoWhileLen(...
书上的做法算不出来,下面贴出做法
Private Sub Command1_Click()
Dim str As String
str = Trim(Text1)
n = 0
Do While Len(ser) > 0
k = InStr(1, str, " ")
If k = 0 Then
Exit Do
Else
str = Trim(str, Len(str) - k)
n = n + 1
End If
Loop
Label1 = "句子中有" & n + 1 & "个单词"
End Sub
老师说吧第二个Trim改成right,变成
Private Sub Command1_Click()
Dim str As String
str = Trim(Text1)
n = 0
Do While Len(ser) > 0
k = InStr(1, str, " ")
If k = 0 Then
Exit Do
Else
str = Right(str, Len(str) - k)
n = n + 1
End If
Loop
Label1 = "句子中有" & n + 1 & "个单词"
End Sub
好像还是不对? 展开
Private Sub Command1_Click()
Dim str As String
str = Trim(Text1)
n = 0
Do While Len(ser) > 0
k = InStr(1, str, " ")
If k = 0 Then
Exit Do
Else
str = Trim(str, Len(str) - k)
n = n + 1
End If
Loop
Label1 = "句子中有" & n + 1 & "个单词"
End Sub
老师说吧第二个Trim改成right,变成
Private Sub Command1_Click()
Dim str As String
str = Trim(Text1)
n = 0
Do While Len(ser) > 0
k = InStr(1, str, " ")
If k = 0 Then
Exit Do
Else
str = Right(str, Len(str) - k)
n = n + 1
End If
Loop
Label1 = "句子中有" & n + 1 & "个单词"
End Sub
好像还是不对? 展开
1个回答
展开全部
设:
你的英文句子要写入的那个文本框为Text1,
单词数要输出的那个文本框为Text2
“统计”那个按钮为Command1
则:
Private Sub Command1_Click()
Dim BufStr As String, LS As Long, LE As Long, V() As String
bufStr=text1.text
BufStr = Replace(bufstr, "'", " ")
BufStr = Replace(BufStr, vbCrLf, " ")
BufStr = Replace(BufStr, vbCr, " ")
BufStr = Replace(BufStr, vbLf, " ")
BufStr = Trim(BufStr)
Do
LS = Len(BufStr)
BufStr = Replace(BufStr, " ", " ")
LE = Len(BufStr)
Loop Until LS = LE
V = Split(BufStr, " ")
Text2.Text = Trim(UBound(V) - LBound(V) + 1)
End Sub
以上代码能够正确计算出文本中含有多少个单词
如果你不明白,我在给你解释:
bufstr是缓存字符串,这样能够不破坏本来文本框的内容,并且在内存中可以高速的处理字符串。
循环外的几行Replace是为了将字符串中非可见字符替换成空格,以方便后期处理。
其中很重要的是将"'"替换成空格。
例如:I'm a boy!这句话有4个单词,所以一定要将“'”也替换掉
通过上面的操作,你的bufstr中会生成好多个空格,而且有很多是连续的空格
循环的作用就是将连续的空格替换成单个空格
出了循环,我们使用了一个Split函数,具体作用去查MSDN,通过这个函数我们得到了一个包含n个单词的数组元素,然后我们利用“上限-下限+1=元素数量”给出你的最终答案。
你的英文句子要写入的那个文本框为Text1,
单词数要输出的那个文本框为Text2
“统计”那个按钮为Command1
则:
Private Sub Command1_Click()
Dim BufStr As String, LS As Long, LE As Long, V() As String
bufStr=text1.text
BufStr = Replace(bufstr, "'", " ")
BufStr = Replace(BufStr, vbCrLf, " ")
BufStr = Replace(BufStr, vbCr, " ")
BufStr = Replace(BufStr, vbLf, " ")
BufStr = Trim(BufStr)
Do
LS = Len(BufStr)
BufStr = Replace(BufStr, " ", " ")
LE = Len(BufStr)
Loop Until LS = LE
V = Split(BufStr, " ")
Text2.Text = Trim(UBound(V) - LBound(V) + 1)
End Sub
以上代码能够正确计算出文本中含有多少个单词
如果你不明白,我在给你解释:
bufstr是缓存字符串,这样能够不破坏本来文本框的内容,并且在内存中可以高速的处理字符串。
循环外的几行Replace是为了将字符串中非可见字符替换成空格,以方便后期处理。
其中很重要的是将"'"替换成空格。
例如:I'm a boy!这句话有4个单词,所以一定要将“'”也替换掉
通过上面的操作,你的bufstr中会生成好多个空格,而且有很多是连续的空格
循环的作用就是将连续的空格替换成单个空格
出了循环,我们使用了一个Split函数,具体作用去查MSDN,通过这个函数我们得到了一个包含n个单词的数组元素,然后我们利用“上限-下限+1=元素数量”给出你的最终答案。
追问
这个我也百度到了啊,大哥你复制的还不全。我只是想知道上面那段哪里出了问题,不想重启用一段新的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询