找回密码
 加入
搜索
查看: 4535|回复: 9

[AU3基础] [已解决]怎么简化这2段代码,求教。

  [复制链接]
发表于 2012-8-17 03:08:03 | 显示全部楼层 |阅读模式
本帖最后由 zzs162 于 2012-8-17 20:13 编辑

怎么简化这2段代码,求教。
代码:
If StringMid($sRer, 3,1) =  StringMid($sRer, 4,1)  THEN
        $js=$js+1
ElseIf StringMid($sRer, 3,1) =  StringMid($sRer, 5,1)  THEN
                $js=$js+1
ElseIf StringMid($sRer, 4,1) =  StringMid($sRer, 5,1)  THEN
                $js=$js+1
        endif
--
详情请看4-5楼
发表于 2012-8-17 04:21:51 | 显示全部楼层
for $a=4 to 5
if stringmid($a-1,1) = stringmid($a) then $js+=1
next
 楼主| 发表于 2012-8-17 09:59:33 | 显示全部楼层
for $a=4 to 5
if stringmid($a-1,1) = stringmid($a) then $js+=1
next
Qokelate 发表于 2012-8-17 04:21



    测试了好像不行啊。
发表于 2012-8-17 15:53:09 | 显示全部楼层
本帖最后由 ajian55 于 2012-8-17 15:54 编辑

回复 3# zzs162


    2楼的当然不行,少比较了一次。

  本来就只需要比较3次,似乎没什么好简化了的,不过可提高效率N分之一毫秒:
$a = StringMid($sRer, 3, 1)
$b = StringMid($sRer, 4, 1)
$c = StringMid($sRer, 5, 1)
If $a == $b Then 
$js += 1
ElseIf $a == $c Then 
$js += 1
ElseIf $b == $c Then 
$js += 1
EndIf

评分

参与人数 1贡献 +5 收起 理由
tryhi + 5 学习了

查看全部评分

发表于 2012-8-17 16:09:19 | 显示全部楼层
#include <Array.au3>
$sRer = "abcdefghi"
$sp = StringSplit(StringMid($sRer,3,3),"",2)
$arr = _ArrayUnique($sp)
$js += 3-$arr[0] 

评分

参与人数 1贡献 +5 收起 理由
tryhi + 5 学习了

查看全部评分

 楼主| 发表于 2012-8-17 19:30:52 | 显示全部楼层
太感谢各位了。让我多学了点东西。。
 楼主| 发表于 2012-8-17 19:56:21 | 显示全部楼层
本帖最后由 zzs162 于 2012-8-17 20:12 编辑

谢谢楼上各位
   测试4-5可以。谢谢啊。
发表于 2012-8-19 19:49:40 | 显示全部楼层
感谢分享,这下可以好好学习了
发表于 2012-8-23 15:57:01 | 显示全部楼层
回复 5# 风行者


    又学习了一个函数的用法—_ArrayUnique()的用法,呵呵~
 
4楼兄弟的程序与楼主几乎一样,但:
自己多琢磨就会发现把函数返回值先赋值给一个变量比直接使用函数还是可以节省一些时间的。
特别是需要多次引用的时候。

(楼主的程序从可读上比四楼要好,但四楼的效率稍微高一点,由于代码短,所以提高的效率不明显!)
发表于 2012-8-23 23:15:18 | 显示全部楼层
If StringInStr(StringMid ($sRer,4,2),StringMid($sRer, 3, 1)) Then $js += 1
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 17:43 , Processed in 0.082627 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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