找回密码
 加入
搜索
查看: 12811|回复: 43

[AU3基础] 判断无序字符是否相等(已解决)

 火... [复制链接]
发表于 2010-8-6 20:12:14 | 显示全部楼层 |阅读模式
本帖最后由 lin0308 于 2010-8-7 16:14 编辑

如$a='abc'    $b='bac'  
当如果$a='ab',$b='abc'就不相等

谢谢各位高手,问题圆满解决
谢谢,3mile 水木子 大绯狼 C.L 的代码,特别是C.L的代码实在高
发表于 2010-8-6 20:20:20 | 显示全部楼层
本帖最后由 水木子 于 2010-8-6 21:10 编辑

理解错误,不好意思,再想想!
 楼主| 发表于 2010-8-6 20:24:55 | 显示全部楼层
回复 2# 水木子

你理解错了,$a='321'的话   $B='123',不会相等的
发表于 2010-8-6 20:27:29 | 显示全部楼层
哦!你的意思是不管顺序,只管字符是否相同是吧?
 楼主| 发表于 2010-8-6 20:27:52 | 显示全部楼层
回复 4# 水木子


    是的
发表于 2010-8-6 20:53:59 | 显示全部楼层
正则替换吧。
呼唤Afan的降临!!

这个回复有点水......因为替换模式我不会..
发表于 2010-8-6 21:28:41 | 显示全部楼层
先分解,然后stringinstr
发表于 2010-8-6 21:42:16 | 显示全部楼层
本帖最后由 水木子 于 2010-8-6 22:12 编辑

相当笨的方法!完全不值得学习的!抛砖引玉吧!
$sCompare = _StringContrast('abc123', '123abcdef');需要比较的两个字符串

If $sCompare = '' Then ;返回空,说明两个字符串相同(无顺序的情况)
        MsgBox(0, '', '这两个字符串相同')
Else
        MsgBox(0, '不同之处:' & $sCompare, '这两个字符串不相同')
EndIf

Func _StringContrast($sString1, $sString2)
        Local $sReg
        If Number(StringLen($sString1)) >= Number(StringLen($sString2)) Then
                $sStringa = $sString2
                $sStringb = $sString1
        Else
                $sStringa = $sString1
                $sStringb = $sString2
        EndIf

        $aString = StringRegExp($sStringa, '.', 3)
        For $i = 0 To UBound($aString) - 1
                $sReg = StringRegExpReplace($sStringb, $aString[$i], '', 1)
                $sStringb = $sReg
        Next ;==>ExpRep
        Return $sReg
EndFunc   ;==>_StringContrast

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-8-6 22:25:02 | 显示全部楼层
本帖最后由 3mile 于 2010-8-6 22:30 编辑

是判断相似数吗?还是包括?
$a=InputBox("","输入$a")
$b=InputBox("","输入$b")

If $a==$b Then 
        MsgBox(0,0,"两数相等")
ElseIf StringInStr($a,$b) Then
        MsgBox(0,0,"$a包括$b")
ElseIf StringInStr($b,$a) Then
        MsgBox(0,0,"$b包括$a")
EndIf
发表于 2010-8-6 22:32:19 | 显示全部楼层
本帖最后由 水木子 于 2010-8-6 23:42 编辑

回复 9# 3mile

楼主的意思应该是这样的!

abc123 = 213acb

abc123 <> abc124
发表于 2010-8-6 22:48:56 | 显示全部楼层
回复 10# 水木子
排序应该可以搞定吧
#include <array.au3>
$a="123"
$b="312"
$a_array=StringSplit($a,"")
_ArrayDelete($a_array,0)
$aNewArray = _ArrayPermute($a_array, "")
$b_array=_ArrayFindAll($aNewArray,$b)
If UBound($b_array)>0 Then 
MsgBox(0,0,"相似")
else
msgbox(0,0,"不相似")
endif
发表于 2010-8-6 22:57:10 | 显示全部楼层
回复 11# 3mile

我用你的方法这样测试,数组超出界限!

$a = "abcdef12345"
$b = "abc123"
发表于 2010-8-6 23:01:24 | 显示全部楼层
回复 12# 水木子
_ArrayPermute的问题。排序数量太大
发表于 2010-8-6 23:09:57 | 显示全部楼层
不知道这样如何?
今天喝了很多酒,太张狂了。同志们不要介意!!!!
#include <array.au3>
Local $z=1
$a="abcdef12345"
$b="2acb31"
$a_array=StringSplit($a,"")
_ArrayDelete($a_array,0)
$b_array=StringSplit($b,"")
_ArrayDelete($a_array,0)
For $i=0 To UBound($b_array)-1
        $fin=_ArrayFindAll($a_Array,$b_array[$i])
        If UBound($fin)>0 Then $z+=1
Next
If StringLen($b)=$z Then
        MsgBox(0,0,"相似")
Else
        MsgBox(0,0,"不相似")
EndIf
发表于 2010-8-6 23:14:34 | 显示全部楼层
回复 14# 3mile
看来你真喝了不少呢!有测试吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 03:35 , Processed in 0.090621 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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