当前位置:编程学习 > VB >>

今天遇到很难的问题了

怎么比较字符是否相等
比如:TEXT1=“abcd1234”       TEXT2=“12abcd34”
 怎么得出TEXT1和TEXT2内容是一样的,(不考虑顺序和大小写)

       --------------------编程问答-------------------- ....................

你是想进行字符比较并且不考虑位置是吧?

使用循环就可以了.. --------------------编程问答-------------------- 写个函数来处理:
\
Function UpperAndSortString(ByVal S As String) As String
    Dim i As Long, j As Long, t As String
    S = UCase(S)
    For i = 1 To Len(S) - 1
        For j = i + 1 To Len(S)
            If Mid(S, i, 1) > Mid(S, j, 1) Then
                t = Mid(S, i, 1)
                Mid(S, i, 1) = Mid(S, j, 1)
                Mid(S, j, 1) = t
            End If
        Next j
    Next i
    UpperAndSortString = S
End Function

Private Sub Form_Load()
    debug.print UpperAndSortString("abcd1234") = UpperAndSortString("ab1234cd")
    End
End Sub

--------------------编程问答-------------------- 循环比较就行了。 --------------------编程问答-------------------- 如果字符串字符比较多的话,循环很慢。

你可先用用函数换成大写,去前后空格。
然后把字串中的每个字符的ASCII值相加。
如果字符串的ascii总值相等,两个字符串基本相同。


但是有判断失误的时候,尽管概率很低。
但是速度快很多。你可以加入其他的判别,降低失误率。
--------------------编程问答-------------------- 将内容进行排序,然后比较就先了,先比较长度,后比较内容,这样连是否大小写的问题都考虑进去了。
--------------------编程问答-------------------- 0:如果字符串长度不一致则直接退出,如长度一致则继续下面步骤:
1:把字符串同一大小写(全部大写或全部小写:UCASE LCASE)
2: 把字符串转化为BYTE数组(COPYMEMORY)
3:排序
4:比较数组

以上步骤在字符串比较长的时候才会显示出速度上的优势,在字符串很短的时候不一定比一个双重循环的逐个字符比较快。 --------------------编程问答-------------------- 同意2楼的做法。将两个字符串排序后再比较。
但我觉得可以改进一下,就是在排序之前,先比较一下两个字符串的长度。
如果长度不同,就直接判断为不相等了。不用再排序了。  --------------------编程问答-------------------- 0:如果字符串长度不一致则直接退出,如长度一致则继续下面步骤: 
1:把字符串同一大小写(全部大写或全部小写:UCASE   LCASE) 
2:   把字符串转化为BYTE数组(COPYMEMORY) 
3:排序 
4:比较数组 

以上步骤在字符串比较长的时候才会显示出速度上的优势,在字符串很短的时候不一定比一个双重循环的逐个字符比较快。 --------------------编程问答-------------------- 顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --------------------编程问答-------------------- 直接统计字符串中 各个字符出现的次数 

然后比较这两个字符串的‘a’的个数是否一致、‘b’的个数是否一致。。。。。。。

就可以了吧 --------------------编程问答-------------------- Option Explicit
Dim i&
Private Sub Form_Load()
   Text1.Text = "1234abcd"
   Text2.Text = "AB123CD4"
End Sub

Private Sub Command1_Click()
   If Isamestr(Text1.Text, Text2.Text) Then
      MsgBox "相同"
   Else
      MsgBox "不同"
   End If
End Sub

Private Function Isamestr(tmpstr1 As String, tmpstr2 As String) As Boolean
   If Len(tmpstr1) <> Len(tmpstr2) Then Isamestr = False: Exit Function
   tmpstr1 = UCase(tmpstr1): tmpstr2 = UCase(tmpstr2) '因不管大小写故转为一律大写
   For i = 1 To Len(tmpstr1)
      tmpstr2 = Replace(tmpstr2, Mid(tmpstr1, i, 1), "", , 1)
   Next
   Isamestr = IIf(tmpstr2 = "", True, False)
End Function

--------------------编程问答-------------------- 顶楼上的!
--------------------编程问答-------------------- IF TEXT1.TEXT=TEXT2.TEXT THEN
MSGBOX "相等"
END IF
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,