[已解决]怎么检定一字串中是否包含有中文?
本帖最后由 yjs14 于 2013-1-18 15:30 编辑字串中可能含有一些特殊符号如“♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD一二三”
“♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD一二三”=》检定为包含中文
“♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD” =》检定为不包含中文
因为有特殊符号,好像就不能用StringIsASCII来实现了。 正则吧。。。应该可以的 回复 2# javarike
可能还要检定俄文日文,所以正则要查ASCII+所有特殊符号,这个要怎么编? 我也想知道啊,关注一下。 本帖最后由 netegg 于 2013-1-15 12:59 编辑
用StringToBinary(,$flag)对比下结果,$flag用1或4试试看
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) 回复 3# yjs14
如果要是这样的话StringIsASCII足够了 回复 1# yjs14
你给的例子里,有好多是中文符号,广义上也算是中文了,下面例子是非8位字节的。
#include <Array.au3>
$sStr = "★⊙!@#$%^&*(),.ab2134df⊕Θ◎¤?ABCD一二三"
$aFlag = StringRegExp($sStr, "[^\x00-\xff]", 3)
_ArrayDisplay($aFlag)
至于你要的精确所谓中文/日文什么的范围,自己去unicode查表。其实中文,也得分如gb2312,gbk,cjk等等。 [^\x00-\xff] Local $str = '♤♢♧☼☺☏♥♣☀☻☎★⊙⊕Θ◎❤¤✪☜☞ABCD一二三'
If StringRegExp($str, '[\x{4E00}-\x{9FFF}]') Then
MsgBox(0, '包含汉字', $str)
Else
MsgBox(0, '未包含汉字', $str)
EndIf
楼上全都是高手呀!的确正则匹配是最简单的方法!顺道学习了! 本帖最后由 netegg 于 2013-1-18 06:29 编辑
$str= 'abcdefg一二三'
$aStr = StringSplit($str, '', 2)
For $i In $aStr
$a = StringToASCIIArray($i)
ConsoleWrite(StringLen(StringReplace(StringStripWS(StringReplace(Hex($a), '0', ' '),1),' ',0))&@cr)
next
不知道行不行
貌似不行,全角字母是四个字节 正则很强大,学习一下。
页:
[1]