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分不等。"
你就完蛋了,呵呵