找回密码
 加入
搜索
查看: 3899|回复: 7

[效率算法] [已解决] 求一正则,匹配字符串中是否只有中文

  [复制链接]
发表于 2010-9-9 11:32:43 | 显示全部楼层 |阅读模式
本帖最后由 guland 于 2010-9-9 14:54 编辑

如题,匹配字符串中是否只有中文,或者其中一个字符是否为中文,都可以

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-9 12:53:20 | 显示全部楼层
$a = 'abc含 123'
If StringRegExp($a, '[^\x00-\xff]') Then MsgBox(0, $a, '含有汉字或双字节字符')
$b = '全都是 双字节字符'
If StringRegExp($b, '^[^\x00-\xff]+$') Then MsgBox(0, $b, '全都是双字节字符')

评分

参与人数 1金钱 +50 收起 理由
guland + 50 3Q3Q,搞定了

查看全部评分

发表于 2010-9-9 14:12:31 | 显示全部楼层
本帖最后由 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[4][EF]..|z[5-9]...)+",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

评分

参与人数 2金钱 +100 贡献 +5 收起 理由
guland + 50 3Q3Q,搞定了
afan + 50 + 5 学习了

查看全部评分

发表于 2010-11-6 23:52:52 | 显示全部楼层
本帖最后由 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威望 +3 贡献 +5 收起 理由
afan + 3 + 5 又有学习点 :)

查看全部评分

发表于 2011-2-7 00:09:19 | 显示全部楼层
学习了,感谢
发表于 2011-8-20 14:29:35 | 显示全部楼层
多谢,再次学习
发表于 2015-12-16 18:22:50 | 显示全部楼层
非常好,谢谢,论坛终于能访问了
发表于 2016-1-4 14:21:30 | 显示全部楼层
学习了,这个可以区别日本,赞!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-10 14:28 , Processed in 0.096571 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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