中英文混合字符截取

    技术2022-05-11  141

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


    最新回复(0)