; 正则方法请查看:正则匹配返回中文汉字符位置.ahk

/*   ; 方法一
; 如何用ahk 区分中文和英文
检测单字符 := "t"
MsgBox % Asc(检测单字符)  ; 结果 <= 255,就是英文

未知的记录:"[\u4e00-\u9fa5]"

 [a-zA-Z]

; 包含英文字符【返回非零就是包含】
char := "abc"
MsgBox % char~="[\x00-\xff]"

; 包含非英文字符【返回非零就是包含】
char := "abc测试"
MsgBox % char~="[[:^ascii:]]"
*/

; 方法二:转utf-8之后可以判断字节数与字符数是否相等
s1 = US392033.pdf
s2 = 这是书.pdf
s3 = abcde

s =
(
s1 = {}
    字符串长度: {}
    utf-8字节长度: {}
s2 = {}
    字符串长度: {}
    utf-8字节长度: {}
s3 = {}
    字符串长度: {}
    utf-8字节长度: {}
)

if (StrLen(s2) != StrPut(s2, "utf-8") - 1) {
  MsgBox, % "存在非ascii符号 " StrLen(s2) " - " StrPut(s2, "utf-8") - 1
}

;~ strput 目测会加上终结符, 故长度-1
MsgBox, % Format(s
    , s1, StrLen(s1), StrPut(s1, "utf-8") - 1
    , s2, StrLen(s2), StrPut(s2, "utf-8") - 1
    , s3, StrLen(s3), StrPut(s3, "utf-8") - 1)

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。