高分求帮编一个数组间运算的函数

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:16:28
比如有两个字符串数组,STRING1=abcdefg,STRING2=abc,哪个高手能编个函数FUNCTION(STRING1,STRING2),要求如果STRING1中包含有全部STRING2的字符,则返回1,否则返回0。像上述2个字符串返回的就是1,下面的S1=abcdefg,S2=akl,则返回0.
或者有另外一种方法就是把STRING1中所有STRING2中的字符删去,然后LEN(STRING1)=4,就返回1,否则返回0.
哪种都行,主要要速度快的那种,或者有其他方法比这速度更快也可以,字符串1和2都有很多组,最好是能用到2维数组,编得最好的再加50分
可能我真的说的不怎么清楚,再说一次好了。正如 s68651521所说的,假如STRING1有7个字符,STRING2有3个字符,我就是想知道STRING1中有没有STING1中的3个字符,不管他们在上面地方。3个都有的话才是真,有1个或者2个或者没有的话都是假。INSTR函数我也会用,但是好像不能解决我的问题。我想要更高效率的方法。因为我要处理像STRING1这样的字符串有几百个,像STRING2的有几万个。拆开比较的话我觉得用二维数组最好。每一个STRING1都要逐一比较一下那几万个STRING1。

在你的问题描述中 有歧义 你举了这样一个例子

STRING1=abcdefg,STRING2=abc

这个例子有歧义 所以我换一下例子

STRING1=abcdefg,STRING2=acf

如果你的目的是 查找 在STRING1里 是不是存在有"acf" 这个字符串
那么很简单 使用InStr()函数 直接就可以返回结果. 这个结果>0 就是True 如果=0 就是False
代码如下:
Public Function CCC(ByVal String1 As String, ByVal String2 As String) As Long
If InStr(1, String1, String2, vbBinaryCompare) Then CCC = 1 Else CCC = 0
End Function

当你使用MsgBox CCC("abcdefg", "abc")时 程序会提示 1
当你使用MsgBox CCC("abcdefg", "acf")时 程序会提示 0

如果你的目的是 查找 在STRING1里 是不是存在 "a" "c" "f" 这3个字母,不管他们在什么地方的话 那么就要一位一位的判断,如果你是想实现这种目的的话,代码如下:
Private Function CCC(ByVal String1 As String, ByVal String2 As String) As Boolean
CCC = True
For i = 1 To Len(String2)
If InStr(1, String1, Mid(String2, i, 1), vbBinaryCompare) = 0 Then CCC = False: Exit For
Next i
End Fun