awfymwvf 发表于 2011-3-2 14:28:46

[已解决]如何比较两个字符串中是否含有相同字符串呢?

本帖最后由 awfymwvf 于 2011-3-3 08:12 编辑

如何比较两个字符串中是否含有相同字符串呢?

比如说:有一个字串是:mdfhdcoolddl
            另一个字串是:34coolmma

都含有cool这个字串,就返回1,否则就返回0,当然,包括一个和两个相同字母不算,三个连续相同字串才算,

谢谢大家了

smartzbs 发表于 2011-3-2 16:18:54

$s1="mdfhdcoolddl"
$s2="34coolmma"

_CompSubStr($s1, $s2)

Func _CompSubStr($s1, $s2, $iCompMinLen = 3);$iCompMinLen最短比较长度,本例为3个以上连续字符才比较
        Local $iLen1, $i, $j, $sSub
        $iLen1 = StringLen($s1)
        For $i = 1 To $iLen1
                For $j = $iLen1-$i+1 To $iCompMinLen Step -1
                        $sSub = StringMid($s1, $i, $j)
                        If StringInStr($s2, $sSub, 0, 1) Then
                                ConsoleWrite($sSub & @crlf)
                                Return 1
                        EndIf
                Next
        Next
        Return 0
EndFunc

awfymwvf 发表于 2011-3-2 16:26:37

首先谢谢楼上的兄弟,可代码没看懂,另外怎么看有没有效呢?

MsgBox(,"aaa",_CompSubStr($s1, $s2))

这个不行。。。呵呵,我是新手,不要见怪啊。再次谢谢兄弟

smartzbs 发表于 2011-3-2 16:44:15

MsgBox(0,"结果",_CompSubStr($s1, $s2))

awfymwvf 发表于 2011-3-2 17:00:54

明天测试一下。再次感谢

tryhi 发表于 2011-3-2 18:28:13

$s1 = "mdfhdcoolddl"
$s2 = "mdf34cosolmmadadl"
$a = _CompSubStr($s1, $s2)
If $a Then MsgBox(0,0,"存在"&$3&"个或三个以上相同字符")
Func _CompSubStr($s1, $s2, $iCompMinLen = 3);$iCompMinLen 最短比较长度,本例为3个以上连续字符才比较
        Local $iLen1, $i, $j, $sSub
        $iLen1 = StringLen($s1)
        For $i = 1 To $iLen1 + 1 - $iCompMinLen
                $sSub = StringMid($s1, $i, $iCompMinLen)
                If StringInStr($s2, $sSub, 0, 1) Then
                        Return 1
                EndIf
        Next
        Return 0
EndFunc   ;==>_CompSubStr借用2楼的代码做优化

3mile 发表于 2011-3-2 18:34:23

未作测试。
$a = "mdfhdcoolddl"
$b = "34coolmmamdfh"
MsgBox(0, 0, _stringcomp($a, $b, 3))
Func _stringcomp($a, $b, $number);字符串1,字符串2,最小比较字符
        For $n = StringLen($b) To $number Step -1
                For $i = 1 To StringLen($b) - $n
                        If StringInStr($a, StringMid($b, $i, $n)) > 0 Then Return True
                Next
        Next
        Return False
EndFunc   

awfymwvf 发表于 2011-3-3 07:56:46

哇,高手全到了。看看谁的代码最强大。测试中。。。。。

awfymwvf 发表于 2011-3-3 08:11:35

测试完成,smartzbs和3mile的代码均测试通过,tryhi朋友的代码运行出错,没有$3这个变量

首先要感谢这三位朋友的付出,

我最后采用了3mile大侠的代码,因为这个代码我看懂了。呵呵。

再次感谢三位兄弟。
页: [1]
查看完整版本: [已解决]如何比较两个字符串中是否含有相同字符串呢?