pusofalse 发表于 2009-12-20 11:04:12

本帖最后由 pusofalse 于 2009-12-20 11:11 编辑

Re 15#:
afan兄的DirInstall_udf.au3中就有“表驱动”的用法啊。
Toplau3函数中用到的一句Assign("_" & $xdDiry, 0)和If IsDeclared("_" & $xdDiry) = 0 Then ... ,其实这就是属于“表驱动”了。
如果不用这两条语句,你原本的思路是怎样的呢?这里的“表”便是变量表了。

afan 发表于 2009-12-20 11:11:49

回复 16# pusofalse

唉,不太明白执行效率的比对,有时候完全是靠感觉用这种会比较有效率,呵呵,惭愧~~

bing614 发表于 2009-12-20 11:34:03

努力学习中。谢谢各位

文白 发表于 2009-12-20 15:47:39


Func StringLength($sStr)
      Return (BinaryLen(StringToBinary($sStr,4)) + StringLen($sStr))/2
EndFunc

pcbar 发表于 2009-12-20 16:46:16

本帖最后由 pcbar 于 2009-12-20 16:51 编辑

$sString = "abc中文.% 123"
StringRegExpReplace($sString,".","")
Msgbox(0, "长度", @Extended )
或者
$sString = "abc中文.% 123"
$b=StringRegExp($sString,".",3)
Msgbox(0, "长度", UBound($b))

当然,效率不是最高的

298311657 发表于 2009-12-20 22:21:47


pusofalse 发表于 2009-12-20 09:53 http://www.autoitx.com/images/common/back.gif

版主这个方法思想确实巧妙,但是对于中文字符获取的字节数不对~一个中文被认为1字节

pusofalse 发表于 2009-12-20 22:39:34

回复 21# 298311657


    怪我没说清楚,原文中只提到“此处1个全角字符的长度同为1”。其实这里就是只计算字符数,而非字节数了。

文白 发表于 2009-12-21 00:11:49

1.Binary:
Return BinaryLen($str);对'0x({2})+'格式字符串无效
2.StringRegExp:
StringRegExp($str,"[\s\S]*",1)
Return @Extended-1

hzxymkb 发表于 2009-12-21 14:42:54

看到楼主的高手真多呀!我也要努力学习才行的!

bob 发表于 2009-12-22 13:11:30

少有新手来发挥,全是一群老鸟,有违LZ初衷啊!
{:3_102:}

Amu 发表于 2009-12-22 14:46:05

$Str = "测试字符串test"
Msgbox(0, "", "“"&$Str&"”的长度是:"&StringInStr($Str&@crlf, @crlf)-1)

kn007 发表于 2009-12-22 18:42:18

哇,amu浮出来了

wwant 发表于 2009-12-22 19:43:47

:face (7):我也乱来一个,刚才看了大家的11楼的感触最深,很好,我从来没有这么思考过,我下面的代码可能不符合版主的要求,不过也没有违规,我乱来的
好处是代码简单,缺点是没有11楼的快
$var="ddfalsfaadfakj我是中国人ldfljsfjf"
$i=1
while 1
        If StringMid($var,1,$i)=$var Then
                MsgBox(4096,"显示结果","字符长度:"&$i)
                ExitLoop
        EndIf
        $i += 1
WEnd

sanmoking 发表于 2009-12-23 15:40:34

本帖最后由 sanmoking 于 2009-12-24 10:15 编辑

貌似我的方法一出来全场震惊,哈哈
看我的:$a = "使用纯AU3编写,禁止调用其他语言(如VBS、JAVA等)。加分:视思路加分,10-60分不等。"
$txt = $a&"sanmoking"
$ok = StringInStr ($txt,"sanmoking")-1
MsgBox(0,"字符数",$ok)快给我最高分....哈哈
















回复sanmoking
    $a = "sanmoking使用纯AU3编写,禁止调用其他语言(如VBS、JAVA等)。加分:视思 ...
afan 发表于 2009-12-23 15:44 http://www.autoitx.com/images/common/back.gif








哈哈,,$a = "sanmoking纯AU3编写,禁止调用其他sanmoking1001语言"&@CR&@CRLF&"加分10-60分不等。"
$b = "sanmoking"
While 1
if StringInStr ($a,$b) > 0 Then
$b = $b&Random(0,9,1)
Else
ExitLoop
EndIf
WEnd
$txt = $a&$b
$ok = StringInStr ($txt,$b)-1
MsgBox(0,"结果",StringLen ($a)&@CRLF&$ok)



刚看见题目上不让用if,那就不用啦,如下:
$a = InputBox("计算输入的字符数量","请随便输入一段文字:","这里随便写点文字。"," M",150,50)
$b = "看这下谁再说我的关键词会有重复,我写个长长长长的关键词,你要是专门一个一个打出来,那我真的佩服你拉,哈哈."
Do
$b = $b&Random(0,9,1)
Until StringInStr ($a,$b) = 0
$txt = $a&$b
$ok = StringInStr ($txt,$b)-1
MsgBox(0,"结果","<"&$a&">"&@CRLF&"-------------------------------"&@CRLF&"StringLen的结果: "&StringLen ($a)&@CRLF&"我的结果: "&$ok)

afan 发表于 2009-12-23 15:44:51

回复 29# sanmoking


    $a = "sanmoking使用纯AU3编写,禁止调用其他语言(如VBS、JAVA等)。加分:视思路加分,10-60分不等。"

你就完蛋了,呵呵
页: 1 [2] 3
查看完整版本: 练习001 - 计算字符串长度