找回密码
 加入
搜索
查看: 3136|回复: 8

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

  [复制链接]
发表于 2011-3-2 14:28:46 | 显示全部楼层 |阅读模式
本帖最后由 awfymwvf 于 2011-3-3 08:12 编辑

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

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

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

谢谢大家了
发表于 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
 楼主| 发表于 2011-3-2 16:26:37 | 显示全部楼层
首先谢谢楼上的兄弟,可代码没看懂,另外怎么看有没有效呢?

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

这个不行。。。呵呵,我是新手,不要见怪啊。再次谢谢兄弟
发表于 2011-3-2 16:44:15 | 显示全部楼层
MsgBox(0,"结果",_CompSubStr($s1, $s2))
 楼主| 发表于 2011-3-2 17:00:54 | 显示全部楼层
明天测试一下。再次感谢
发表于 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楼的代码做优化
发表于 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   
 楼主| 发表于 2011-3-3 07:56:46 | 显示全部楼层
哇,高手全到了。看看谁的代码最强大。测试中。。。。。
 楼主| 发表于 2011-3-3 08:11:35 | 显示全部楼层
测试完成,smartzbs和3mile的代码均测试通过,tryhi朋友的代码运行出错,没有$3这个变量

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

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

再次感谢三位兄弟。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 09:13 , Processed in 0.074766 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表