参考一下:function GetHz0(s:string):string; var hz:string;i:integer; begin hz:=''; for i:=1 to length(s) do begin if ByteType(s,i) <> mbLeadByte then //单字节\//双字节的第二个字节 begin if trim(hz) = '' then begin hz := s[i]+ #13#10; end else begin if i = Length(s) then begin hz := hz + s[i]; end else begin hz := hz + s[i]+ #13#10; // ' ';// end; end; end else //双字节的第一个字节 begin if trim(hz) = '' then begin hz := s[i]; end else begin hz := hz + s[i]; end; end; end; GetHz0:=hz; end;
procedure TForm1.Button2Click(Sender: TObject); var str,str1:string; I:INTEGER; ishead:boolean; begin str:='aa中dd文a'; ishead:=true; str1:=''; FOR i:=1 to length(str) do begin str1:=str1+str[i]; if str[i]>chr(127) then begin if not ishead then begin ishead:=true; showmessage('汉字尾'); end else begin ishead:=false; showmessage('汉字头'); end; end; end; end;
if str[1]>chr(127) then //str[1]是“中”字的一半
begin
showmessage('是中文的一半');
end;
你的程序稍加改动,即可判断字首字尾.
只需附加一个计数器,可能取值0,1,2,没检索一个字节,改变一次值.1为汉字头,0,2为汉字尾.
^_^给分吧!我认为早就解决了.
可否帮一下我现在的问题贴子,有关postmessage的那个?谢谢.
var hz:string;i:integer;
begin
hz:='';
for i:=1 to length(s) do
begin
if ByteType(s,i) <> mbLeadByte then //单字节\//双字节的第二个字节
begin
if trim(hz) = '' then
begin
hz := s[i]+ #13#10;
end
else
begin
if i = Length(s) then
begin
hz := hz + s[i];
end
else
begin
hz := hz + s[i]+ #13#10; // ' ';//
end;
end;
end
else //双字节的第一个字节
begin
if trim(hz) = '' then
begin
hz := s[i];
end
else
begin
hz := hz + s[i];
end;
end;
end;
GetHz0:=hz;
end;
var str,str1:string;
I:INTEGER;
ishead:boolean;
begin
str:='aa中dd文a';
ishead:=true;
str1:='';
FOR i:=1 to length(str) do
begin
str1:=str1+str[i];
if str[i]>chr(127) then
begin
if not ishead then
begin
ishead:=true;
showmessage('汉字尾');
end
else
begin
ishead:=false;
showmessage('汉字头');
end;
end;
end;
end;
用ASCII吗
大雨127的是汉字啊