目的:获得汉字拼音的首字母
本来论坛已经有相关的解决办法,公认比较完美的是文白兄的方案。但我只需要首字母,用来过滤词条,同时要求效率尽量高。
下面是一种办法
Global Const $key[27]=['吖','八','擦','耷','俄','发','噶','哈','丌','丌','卡','拉','马','拿','哦','趴','七','然','撒','他','挖','挖','挖','西','丫','匝','匝']
Global $str='autoit中文论坛autoit中文论坛autoit中文论坛autoit中文论坛autoit中文论坛autoit中文论坛autoit中文论坛',$L
For $i = 1 To StringLen($str)
Switch Dec(StringTrimLeft(StringToBinary(StringMid($str,$i,1)),2))
Case 32 To 127
$L&=StringMid($str,$i,1)
Case 33095 To 62289
$L&=Chr(97+_C(StringMid($str,$i,1),0,26))
EndSwitch
Next
MsgBox(0,'',$L)
Func _C($s,$f,$e) ;改进的中值法
Local $mid=Int(($e-$f)/2)+$f
If $mid=$f Then Return $f
If StringCompare($s,$key[$mid])=0 Then
Return $mid
ElseIf StringCompare($s,$key[$mid])>0 Then
Return _C($s,$mid,$e)
ElseIf StringCompare($s,$key[$mid])<0 Then
Return _C($s,$f,$mid)
EndIf
EndFunc
还可以更快么? |