delphi中如何判斷某一字符是漢字還是標點符號﹖ |
尚未結案
|
lkr9
一般會員 發表:2 回覆:7 積分:1 註冊:2003-10-13 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
lkr9
一般會員 發表:2 回覆:7 積分:1 註冊:2003-10-13 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
當然可以查內碼範圍,只是你可能要查GB碼,我只知道Big5
另一笨方法,不用查,列舉吧
< class="code">
procedure TForm1.Button1Click(Sender: TObject);
var
ts:WideString;
flag:boolean;
i:integer;
begin
ts:=',。:;”?!「」『』…';
for i :=1 to length(ts) do
begin
if ts[i]=edit1.Text then
begin
ShowMessage('標點符號') ;
flag:=True;
break;
end;
end;
if not flag then ShowMessage('一般漢字');
end;
上列是全型的部份,半型的可自行加入,練習看看 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8147403&CC=182217">
|
lkr9
一般會員 發表:2 回覆:7 積分:1 註冊:2003-10-13 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
function code2txt(icode: string): string; //由big5 碼取得中文字 var wordHi, wordLo,i: integer; begin for i:=0 to length(icode)-1 do if i mod 4=0 then begin //二種寫法皆可 // wordLo := strtoint('$'+ icode[i+1]+icode[i+2]+icode[i+3]+icode[i+4]) and $FF; wordLo := strtoint('$'+ icode[i+3]+icode[i+4]); //取得低位元 // wordHi := strtoint('$'+ icode[i+1]+icode[i+2]+icode[i+3]+icode[i+4]) shr 8; wordHi := strtoint('$'+ icode[i+1]+icode[i+2]); //取得高位元 result := char(wordHi) + char(wordLo); end; end; procedure TForm1.Button1Click(Sender: TObject); //產生Big5內碼檔 var ts:TStrings; sec, off: integer; ch: integer; begin ts := TStringList.Create; try for sec := $A1 to $F9 do begin Application.ProcessMessages; for off := $40 to $7E do begin ch := sec * 256 + off; ts.Add(IntToHex(sec,2)+inttohex(off,2)+'='+code2txt(IntToHex(sec,2)+inttohex(off,2))); end; //0x7F - 0xA0 未定義 for off := $A1 to $FE do begin ch := sec * 256 + off; ts.Add(IntToHex(sec,2)+inttohex(off,2)+'='+code2txt(IntToHex(sec,2)+inttohex(off,2))); end; end; ts.SaveToFile(IncludeTrailingBackslash(GetCurrentDir) + 'Big5Code.txt'); finally ts.Free; end; ShowMessage('OK'); end;這段會產生Big5Code.txt 文檔,內容如下: A140= A141=, A142=、 A143=。 A144=. A145=‧ A146=; A147=: A148=? A149=! A14A=︰ ............ 所有內碼的編號與符號的排列 從此得知,標點符號的區塊,介於 A141~A1AC 其中有部份是特殊符號,看你自己的判定是否屬標點符號囉 ps:上述程式碼只是節錄部份,請自行修改可執行 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |