zzs162 发表于 2012-8-17 03:08:03

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

本帖最后由 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楼

Qokelate 发表于 2012-8-17 04:21:51

for $a=4 to 5
if stringmid($a-1,1) = stringmid($a) then $js+=1
next

zzs162 发表于 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 http://www.autoitx.com/images/common/back.gif


    测试了好像不行啊。

ajian55 发表于 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

风行者 发表于 2012-8-17 16:09:19

#include <Array.au3>
$sRer = "abcdefghi"
$sp = StringSplit(StringMid($sRer,3,3),"",2)
$arr = _ArrayUnique($sp)
$js += 3-$arr

zzs162 发表于 2012-8-17 19:30:52

太感谢各位了。让我多学了点东西。。

zzs162 发表于 2012-8-17 19:56:21

本帖最后由 zzs162 于 2012-8-17 20:12 编辑

谢谢楼上各位
   测试4-5可以。谢谢啊。

txxdhnt 发表于 2012-8-19 19:49:40

感谢分享,这下可以好好学习了

xlj310 发表于 2012-8-23 15:57:01

回复 5# 风行者


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

(楼主的程序从可读上比四楼要好,但四楼的效率稍微高一点,由于代码短,所以提高的效率不明显!)

wua0550 发表于 2012-8-23 23:15:18

If StringInStr(StringMid ($sRer,4,2),StringMid($sRer, 3, 1)) Then $js += 1
页: [1]
查看完整版本: [已解决]怎么简化这2段代码,求教。