[已解决] 求一正则,匹配字符串中是否只有中文
本帖最后由 guland 于 2010-9-9 14:54 编辑{:face (198):}如题,匹配字符串中是否只有中文,或者其中一个字符是否为中文,都可以 $a = 'abc含 123'
If StringRegExp($a, '[^\x00-\xff]') Then MsgBox(0, $a, '含有汉字或双字节字符')
$b = '全都是 双字节字符'
If StringRegExp($b, '^[^\x00-\xff]+$') Then MsgBox(0, $b, '全都是双字节字符')
本帖最后由 Duvet 于 2010-9-9 14:30 编辑
試看看可不可以
※註:請以Unicode格式來儲存au3
;漢字範圍 \u4E00-\u9fa5
;在這改為 \u4E00-\u9fff
Local $str="English,简体,繁體,にほんご,"&BinaryToString("0xD55CAD6DC758",3)
MsgBox(0,"全部的文字",$str)
$str=StringToBinary($str,3)
$str=StringTrimLeft($str,2)
$str=StringRegExpReplace($str,"(.{4})","z$1")
$str=StringRegExp($str,"(?:z..|z...)+",3)
If @Error Then Exit;Msgbox(32,"提醒","字串中不含中文")
Local $i=0,$newstr=""
For $i=0 To UBound($str)-1
$newstr&= BinaryToString("0x"&StringReplace($str[$i],"z",""),3)&@CRLF
Next
MsgBox(0,"中文的部份",$newstr)
Exit 本帖最后由 Duvet 于 2010-11-7 00:02 编辑
雖然這題列為[已解决],但請容許我更新一下方法,方便後人的使用
#include <Array.au3>
Local $str="English,简体,繁體,にほんご,"&BinaryToString("0xD55CAD6DC758",3)
MsgBox(0,"全部的文字",$str)
If StringRegExp($str, "^[\x{4e00}-\x{9fff}]+$", 0) Then
Msgbox(32, "結果", "字串中只含中文。", 10)
Else
Msgbox(32, "結果", "字串中含非中文。", 10)
EndIf
Local $result = StringRegExp($str, "[\x{4e00}-\x{9fff}]+", 3)
_ArrayDisplay($result, "含中文字串共有 " & UBound($result) & " 筆符合")
Exit
学习了,感谢 多谢,再次学习 非常好,谢谢,论坛终于能访问了 学习了,这个可以区别日本,赞!
页:
[1]