请问如何判断一个字符是中文字符还是西文字符(10分)

  • 主题发起人 主题发起人 ydjjld
  • 开始时间 开始时间
Y

ydjjld

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何判断一个字符是中文字符还是西文字符.谢谢
 
procedure TForm1.Button1Click(Sender: TObject);
var
s,ss:string;
ws:widestring;
i:integer;
begin
s:='AA在地一345677工在五00-$%#';
ws:=s;
ss:='';
for i:=1 to length(ws) do
if length(string(ws))>1 then ss:=ss+'汉'
else ss:=ss+'A';
showmessage(s+#13+ss);
end;
 
ord[1]>126 的是中文,否则是西文
 
function ByteType(const S: string
Index: Integer): TMbcsByteType;
IsDBCSLeadByte
告诉你一个非常有用的函数。
bytetype 它可以判断一个字符串中,某个 Char 是单个字母,还是双字节的前一位或
后一位。
mbSingleByte 单字母
mbLeadByte 双字节第一位
mbTrailByte 双字节第二位
 
判断连续两个字符是否都大于127
 
使用ByteType函数,我刚用过,很好用,如陈晨所说
 
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
s : string;
begin
s := '请问1<2吗';
for i := 1 to length(s) do
begin
if ByteType(s,i) = mbSingleByte then
ShowMessage(s + ' 的第' + inttostr(i) + '个字符是西文')
else
ShowMessage(s + ' 的第' + inttostr(i) + '个字符是中文');
end;

end;

procedure TForm1.Button3Click(Sender: TObject);
var
i : integer;
s : WideString;
begin
s := '请问1<2吗';
for i := 1 to length(s) do
begin
if Ord(s)<=127 then
ShowMessage(s + ' 的第' + inttostr(i) + '个字符是西文')
else
ShowMessage(s + ' 的第' + inttostr(i) + '个字符是中文');
end;

end;
 
多人接受答案了。
 
后退
顶部