本文整理自网络,侵删。
此函数是判断一串字符里,是否存在中语汉字,使用的是汉字对应ASCII码原理,如果某个字符串转成ASCII码,且这个ASCII码是在汉字区域范围的,就认为是存在汉字 。
// 基本汉字 20902字 4E00-9FA5
// 基本汉字补充 74字 9FA6-9FEF
// 扩展A 6582字 3400-4DB5
// 扩展B 42711字 20000-2A6D6
// 扩展C 4149字 2A700-2B734
// 扩展D 222字 2B740-2B81D
// 扩展E 5762字 2B820-2CEA1
// 扩展F 7473字 2CEB0-2EBE0
// 扩展G 4939字 30000-3134A
// 康熙部首 214字 2F00-2FD5
// 部首扩展 115字 2E80-2EF3
// 兼容汉字 477字 F900-FAD9
// 兼容扩展 542字 2F800-2FA1D
// PUA(GBK)部件 81字 E815-E86F
// 部件扩展 452字 E400-E5E8
// PUA增补 207字 E600-E6CF
// 汉字笔画 36字 31C0-31E3
// 汉字结构 12字 2FF0-2FFB
// 汉语注音 43字 3105-312F
// 注音扩展 22字 31A0-31BA
// ? 1字 3007
function IsChinaText(S: string): Boolean;
var
pWChar: PWideChar;
Ascii: Integer;
begin
Result := False;
pWChar := PWideChar(S);
while pWChar^ <> #0 do begin
Ascii := Ord(pWChar^);
case Ascii of
$3007: Exit(True);
$4E00..$9FA5: Exit(True);
$9FA6..$9FEF: Exit(True);
$3400..$4DB5: Exit(True);
$2F00..$2FD5: Exit(True);
$2E80..$2EF3: Exit(True);
$F900..$FAD9: Exit(True);
$E815..$E86F: Exit(True);
$E400..$E5E8: Exit(True);
$E600..$E6CF: Exit(True);
$31C0..$31E3: Exit(True);
$2FF0..$2FFB: Exit(True);
$3105..$312F: Exit(True);
$31A0..$31BA: Exit(True);
$20000..$2A6D6: Exit(True);
$2A700..$2B734: Exit(True);
$2B740..$2B81D: Exit(True);
$2B820..$2CEA1: Exit(True);
$2CEB0..$2EBE0: Exit(True);
$2F800..$2FA1D: Exit(True);
$30000..$3134A: Exit(True);
end;
Inc(pWChar);
end;
end;
相关阅读 >>
Delphi thread.queue与synchronize的区别
Delphi sysutils.comparestr、sysutils.comparetext - 字符串比较
Delphi 利用thttpclient实现http异步下载
更多相关阅读请进入《Delphi》频道 >>