1、字符与ASCII码互换函数:
字符->Ascii:ord
Ascii->字符:chr
2、中文字符的截取问题:
var
n:integer;
str:string;
strSub:string;
begin
str:='我是中国人';
n:=length(str);//n的值是10
strSub:=midstr(str,0,4);//返回我是中国,很明显把汉字当单字节了
strSub:=Copy(str,0,4);//返回我是,这里把汉字当做双字节
end;
|
对于英文或数字来说,取子串用midstr,但是用中文的话,那么简单些,就用copy对了。
这是一些参考代码,看一下。
procedure TForm1.Button1Click(Sender: Tobject);
var s:string;
I,e,c:integer;
begin
s:=memo1.text;
e:=0;c:=0;
for I:=1 to length(s) do
begin
if (ord(s[I])>=33)and(ord(s[I])<=126) then
begin
inc(e);
label1.caption:='英文字数:'+inttostr(e);
end
else
if (ord(s[I])>=127) then
begin
inc(c);
label2.caption:='中文字数:'+inttostr(c div 2);
end;
end;
end;
|
function csubstr($str ,$start ,$len)
{
//判断从什么地方开始截取
if(ord($str{$start})>127)
{
//汉字为双字节,从偶数位开始
$start += ($start%2);
}
return substr($str,$start,$len*2);
}
echo csubstr ('我试',0,1);
|
阅读(778) | 评论(0) | 转发(0) |