返回列表 回复 发帖

[转帖]截取中英文混合字符串

作者:雨中漫步
  1. sub makelen($$)
  2.   {
  3.      my($sstr,$slen)=@_;
  4.      my $makelen,$parity;
  5.      $mslen=length($sstr);
  6.      if($mslen>$slen)
  7.        {
  8.            for($mn=0;$mn<$slen;$mn++) #在要求的长度内
  9.              {
  10.                 $ss=substr($sstr,$mn,1);
  11.                 if(ord($ss)<127) #为英文
  12.                   {
  13.                       $parity+=1;
  14.                   }
  15.              }
  16.             if($parity%2==1) #含英文长度为奇数
  17.              {
  18.                 if($slen%2==1) #如果所要求的长度也为奇数
  19.                            {
  20.                               $tmpstr=substr($sstr,0,$slen);
  21.                        }
  22.                      else #所要求的长度为偶数
  23.                        {
  24.                           $tmpstr=substr($sstr,0,$slen-1);
  25.                        }
  26.              }
  27.            else #含英文长度为偶数或者为0,0也为偶数
  28.              {
  29.                 if($slen%2==1) #如果所要求的长度为奇数
  30.                            {
  31.                               $tmpstr=substr($sstr,0,$slen-1);
  32.                        }
  33.                      else #所要求的长度为偶数
  34.                        {
  35.                           $tmpstr=substr($sstr,0,$slen);
  36.                        }
  37.              }
  38.            $makelen=$tmpstr;
  39.        }
  40.      else
  41.        {
  42.            $makelen=$sstr;
  43.        }
  44.      return $makelen;
  45.   }
复制代码
哈哈哈!!!!你的IP是不是?我都知道了!!!

[转帖]截取中英文混合字符串

  1. sub substring($$)
  2. {
  3.   my ($str, $len) = @_;
  4.   my $retval = substr($str, 0, $len);
  5.   $retval =~ /[\x7f-\xff]+$/s;
  6.   chop($retval) if (length($&) % 2 == 1);
  7.   return $retval;
  8. }   
复制代码
哈哈哈!!!!你的IP是不是?我都知道了!!!
返回列表