Dim i, j, s1 As String, s2 As String, num As Byte 
Dim a() As String, tj As String 
a = Split(Text3.Text, vbNewLine) 
For i = 0 To UBound(a) 
s1 = Trim$(a(i)) 
num = 0 
If s1 <> "" And InStr(s1, " ") = 0 Then 
For j = i + 1 To UBound(a) 
s2 = Trim(a(j)) 
If Left(s2, Len(s1)) = s1 Then 
If num < 255 And InStr(s2, " ") > 0 Then num = num + 1 
Else 
Exit For 
End If 
Next 
tj = tj & s1 & " " & num & vbNewLine 
End If 
Next 
Text4.Text = tj 
这个代码是检先查出,文本文档里拼音后面没有文字的拼音,然后算出以它开头的拼音后面的文字个数,只检查拼音后没文字的,并在结果里显示出来,有文字的就不显示,比如文档里内容如下: 

ba 把 
ban 
bang 帮 

ch 
chu 
chua 
chuang创 
chuai 踹 
co 
con 
cong 聪 
cou 凑 
结果是: 
b 2 
ban 1 
c 3 
ch 1 
chu 1 
chua 1 
chuang创 0 
co 2 
con 1 
b开头的拼音有3个,文字有2个就在b后面显示2.ba后面有字就不显示在结果里。就是chuang这里不知道怎么了出毛病,它应该不显示在结果里的。这个是我自己弄得,不知道哪里错了!!

解决方案 »

  1.   

    “chuang” 和 “创” 之间应该用空格分开
      

  2.   

    现在我这chuang创就是这个格式啊,因为我这规定拼音6位第位是文字我加个空格文字就到第8位了。我也知道价格空格就解决了,现在我的程序认为chuang创认为是一个拼音,搞不明白为啥
      

  3.   

    我想为你完成这个程序,但是我想明白,
    c=3 还是应该 c=6?
    ch=1 还是应该 ch=3?
    chu=1 还是应该 chu=2?
    以上这些问题与你一下描述的不一样呀
    “这个代码是检先查出,文本文档里拼音后面没有文字的拼音,然后算出以它开头的拼音后面的文字个数,只检查拼音后没文字的,并在结果里显示出来,有文字的就不显示”
      

  4.   

    亲爱的朋友,你要认真读你的程序哦
     Dim i As Integer, j As Integer, s1 As String, s2 As String, num As Byte
            Dim a() As String, tj As String = ""
            a = Split(TextBox1.Text, vbNewLine)
            For i = 0 To UBound(a) - 1
                s1 = Trim$(a(i))
                num = 0
                If s1 <> "" And InStr(s1, " ") = 0 Then
                    For j = i + 1 To UBound(a)
                        s2 = Trim(a(j))
                        If Strings.Left(s2, Len(s1)) = s1 Then
                            If num < 255 And InStr(s2, " ") > 0 Then num = num + 1
                        Else
                            Exit For
                        End If
                    Next
                    tj = tj & s1 & " " & num & vbNewLine
                End If
            Next
            TextBox2.Text = tj
    我们来浓缩一下你的程序代码:For i = 0 To UBound(a) - 1
                s1 = Trim$(a(i))
                num = 0
                If s1 <> "" And InStr(s1, " ") = 0 Then
                   tj = tj & s1 & " " & num & vbNewLine
                End If
            Next
    是不是只要s1是个没有空格的字符串就会显示在结果中!
    你可以去试试
      

  5.   

    上面那个意思是我原本的想法,但是这个程序是检查是s1这个字符串没有空格就显示,chuang创 两者之间没有空格就把这个也显示出来了。就是我在判断拼音后面有没有文字这里出问题了,可是我除了这个方法想不出什么办法来判断拼音后面有没有文字了,大部分情况有文字的拼音和字之间都有个空格,可就是chuang创是个例外,不知道该怎么办了
      

  6.   

    这样吧,我也不为你写完整的代码了,只提供思路。
    你想区别英文字符与汉字字符的话,可以用Asc函数,
    如     Asc("g")=103
       Asc("创")=-19276其实,只要是负值的Asc码,就一定是汉字字符
    在你的代码判断空格的基础上再添加判断汉字字符的条件,你的问题就有解了
      

  7.   


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim i As Integer, j As Integer, s1 As String, s2 As String, num As Byte
            Dim a() As String, tj As String = ""
            a = Split(TextBox1.Text, vbNewLine)
            For i = 0 To UBound(a) - 1
                s1 = Trim$(a(i))
                num = 0
                If s1 <> "" And InStr(s1, " ") = 0 And NotPY(s1) = False Then
                    For j = i + 1 To UBound(a)
                        s2 = Trim(a(j))
                        If Strings.Left(s2, Len(s1)) = s1 Then
                            If num < 255 And InStr(s2, " ") > 0 Then num = num + 1
                        Else
                            Exit For
                        End If
                    Next
                    tj = tj & s1 & " " & num & vbNewLine
                End If
            Next
            TextBox2.Text = tj    End Sub
        Private Function NotPY(ByVal Temp As String) As Boolean
            Dim B As Char
            If Temp <> "" Then
                For t% = 1 To Strings.Len(Temp)
                    B = Mid(Temp, t, 1)
                    If LCase(B) < "a" Or LCase(B) > "z" Then
                        NotPY = True
                        Exit Function
                    End If
                Next
            NotPY = False
            End If
    End Function
    相信,这样也不是你最终的代码,因为运行结果不是你想要的另外给你提供一个思路
    把数组a的每个字符串检查一遍
    让软件在“chuang创”之间添加一个空格。
    代码很简单,你动手试试。