看板: BudaTech ◎ 佛典电子化讨论 板主: HeavenChow |
阅读文章: 第 1098/2032 篇 | 上篇 | 下篇 | 回覆 | 转寄 | 转贴 | m H d | 返回 |
发信人: huiray@Lion (ray), 信区: BudaTech 标 题: 中文识别函式 发信站: 狮子吼站 (Sun Dec 28 11:43:08 1997) 转信站: Lion 关於中文识别函式,已实作出来,待进一步包装成物件後提 供给大家使用,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 研发部 -- Ξ Origin: 狮子吼站 <cbs.ntu.edu.tw> [FROM: 210.61.183.51] |
阅读文章: 第 1098/2032 篇 | 上篇 | 下篇 | 回覆 | 转寄 | 转贴 | m H d | 返回 |
□ 台大狮子吼佛学专站 http://buddhaspace.org |