找回密码
 加入
搜索
查看: 4447|回复: 11

[AU3基础] [已解决]怎么检定一字串中是否包含有中文?

 火.. [复制链接]
发表于 2013-1-14 15:37:47 | 显示全部楼层 |阅读模式
本帖最后由 yjs14 于 2013-1-18 15:30 编辑

字串中可能含有一些特殊符号如“♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD一二三”

“♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD一二三”=》检定为包含中文

“♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD”         =》检定为不包含中文

因为有特殊符号,好像就不能用StringIsASCII来实现了。
发表于 2013-1-14 16:30:17 | 显示全部楼层
正则吧。。。应该可以的
 楼主| 发表于 2013-1-14 16:53:34 | 显示全部楼层
回复 2# javarike


    可能还要检定俄文日文,所以正则要查ASCII+所有特殊符号,这个要怎么编?
发表于 2013-1-14 23:46:25 | 显示全部楼层
我也想知道啊,关注一下。
发表于 2013-1-15 12:47:37 | 显示全部楼层
本帖最后由 netegg 于 2013-1-15 12:59 编辑

用StringToBinary(,$flag)对比下结果,$flag用1或4试试看
[au3]Local $a = StringLen(StringToBinary ("aBbc",1)) & @TAB &  StringLen(StringToBinary ("aB一c",1))
Local $b = StringLen(StringToBinary ("aBbc",2)) & @TAB &  StringLen(StringToBinary ("aB一c",2))
Local $c = StringLen(StringToBinary ("aBbc",3)) & @TAB &  StringLen(StringToBinary ("aB一c",3))
Local $d = StringLen(StringToBinary ("aBbc",4)) & @TAB &  StringLen(StringToBinary ("aB一c",4))
Local $e = StringLen("aBbc") & @TAB & StringLen("aB一c")
MsgBox(0,0,$a & @CRLF & $b & @CRLF & $c & @CRLF & $d & @CRLF & $e)[/au3]
发表于 2013-1-15 13:11:16 | 显示全部楼层
回复 3# yjs14
如果要是这样的话StringIsASCII足够了
发表于 2013-1-15 13:37:57 | 显示全部楼层
回复 1# yjs14


    你给的例子里,有好多是中文符号,广义上也算是中文了,下面例子是非8位字节的。

#include <Array.au3>
$sStr = "★⊙!@#$%^&*(),.ab2134df⊕Θ◎¤?ABCD一二三"
$aFlag = StringRegExp($sStr, "[^\x00-\xff]", 3)
_ArrayDisplay($aFlag)


至于你要的精确所谓中文/日文什么的范围,自己去unicode查表。其实中文,也得分如gb2312,gbk,cjk等等。
发表于 2013-1-15 14:49:39 | 显示全部楼层
[^\x00-\xff]
发表于 2013-1-15 14:50:40 | 显示全部楼层
Local $str = '♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD一二三'

If StringRegExp($str, '[\x{4E00}-\x{9FFF}]') Then
        MsgBox(0, '包含汉字', $str)
Else
        MsgBox(0, '未包含汉字', $str)
EndIf
发表于 2013-1-16 10:46:42 | 显示全部楼层
楼上全都是高手呀!的确正则匹配是最简单的方法!顺道学习了!
发表于 2013-1-17 16:33:00 | 显示全部楼层
本帖最后由 netegg 于 2013-1-18 06:29 编辑

[au3]$str= 'abcdefg一二三'
$aStr = StringSplit($str, '', 2)
For $i In $aStr
$a = StringToASCIIArray($i)
ConsoleWrite(StringLen(StringReplace(StringStripWS(StringReplace(Hex($a[0]), '0', ' '),1),' ',0))&@cr)
next
    [/au3]不知道行不行

貌似不行,全角字母是四个字节
发表于 2013-1-18 13:18:43 | 显示全部楼层
正则很强大,学习一下。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 05:51 , Processed in 0.106302 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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