Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8701198
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类:

2006-11-03 11:34:18

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) |
给主人留下些什么吧!~~