频道分类

delphi 检测判断字符串是否包含有中文字符

作者:admin 来源: 日期:2020/5/28 14:58:42 人气: 标签:

 此函数是判断一串字符里,是否存在中语汉字,使用的是汉字对应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 10.4 自定义托管记录下一篇:没有资料