收藏本站 
广告服务 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
中英文混合字符截取
[ 作者:wildhorse01    转贴自:网载    阅读次数:302    更新时间:2006-1-13 0:59:00   录入:蓝色动力 ]         
    

用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;
  }

上一篇:从一个安装文件看CGI的安全性  下一篇: Cultured Perl: 吸引 C 和 Java 程序员目光的 Perl 5.  

网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号