Perl实现中英文混合字符截取

王朝perl·作者佚名  2006-11-24
宽屏版  字体: |||超大  

用perl截取字符串,字符串中含有中文、英文、数字和各种符号,也包含中文标点符号,截取一定数量的字符,并且截取之后中文是完整的,不会出现乱码或问号。

sub makelen($$)

{

my($sstr,$slen)=@_;

my $makelen,$parity;

$mslen=length($sstr);

if($mslen>$slen)

{

for($mn=0;$mn<$slen;$mn++) #在要求的长度内

{

$ss=substr($sstr,$mn,1);

if(ord($ss)<127) #为英文

{

$parity+=1;

}

}

if($parity%2==1) #含英文长度为奇数

{

if($slen%2==1) #如果所要求的长度也为奇数

{

$tmpstr=substr($sstr,0,$slen);

}

else #所要求的长度为偶数

{

$tmpstr=substr($sstr,0,$slen-1);

}

}

else #含英文长度为偶数或者为0,0也为偶数

{

if($slen%2==1) #如果所要求的长度为奇数

{

$tmpstr=substr($sstr,0,$slen-1);

}

else #所要求的长度为偶数

{

$tmpstr=substr($sstr,0,$slen);

}

}

$makelen=$tmpstr;

}

else

{

$makelen=$sstr;

}

return $makelen;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有