您有新信

 
中文识别函式
#1
ray
发信站: 狮子吼站 (Lion , 信区: BudaTech)
关於中文识别函式,已实作出来,待进一步包装成物件後提
供给大家使用,Heaven (不知有没有记错?)说半天以内可
以做出来,事实上没错,不难。这里提供原始码让大家参考
用法是呼叫 Tbig5.isdefine(字串第n个byte,字串)
将回应是否是中文字。

如果要辨识造字或GB, JIS 等码,只要修改isleading 和
isending 两个函式就可以了。

----------
interface
type
  TBig5 = class
    private
     class function isleading(c:char):boolean;
     class function isending(c:char):boolean;
    public
     class function isdefine(pos:cardinal;s:pchar):boolean;
  end;

implementation

class function tbig5.isleading(c:char):boolean;
begin
 result:=(c>=#129) and ( c<=#254 );
end;

class function tbig5.isending(c:char):boolean;
begin
 result:=((c>=#64) and (c<=#126)) or  ((c>=#161) and (c<=#254));
end;

class function Tbig5.isdefine(pos:cardinal;s:pchar):boolean;
var
len,i:cardinal;
begin
     result:=false;
     len:=strlen(s);
     if pos>len-2 then exit;
     i:=0;
     while i<pos+1 do begin
         if isleading((s+i)^) and isending((s+i+1)^) then begin
            if i=pos then begin result:=true;exit;end;
            inc(i,2);
         end
         else inc(i);
     end;
end;

OPEN 98 研发部
Sun Dec 28 11:43:08 1997
回覆 | 转寄 | 返回

□ 台大狮子吼佛学专站  http://buddhaspace.org