今天遇到很难的问题了
怎么比较字符是否相等比如: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 , 基础类