如何识别中文以避免出现半个汉字 Nullgate
【 在 vrain (`_') 的大作中提到: 】
: 试试我的这段程序:
: #!/usr/bin/perl
: sub short_str {
:   my($str) = shift;
:   my($maxlen) = shift;
:   local $i;
:   if ( length($str) <= $maxlen )
:   {
:     return $str;
:   }
:   for ( $i=0; $i<$maxlen; $i++ )
:   {
:     if ( substr($str, $i, 2) =~ /[200-377][200-377]/ )
:     {
:       $i++;
:     }
:   }
:   if ( $i == $maxlen ) { return substr($str, 0, $maxlen) . "..."; }
:   return substr($str, 0, $maxlen - 1) . "...";
: }
: print &short_str("我很讨厌ajal这个怪兽", 12);
: print "n";
: print &short_str("我很讨厌ajal这个怪兽", 13);
: print "n";
: print &short_str("ajal is not stupid", 12);
: print "n";
: print &short_str("not enough?", 12);
: print "n";

又想了一个方法:

sub short_str_2 {
  my($str) = shift;
  my($maxlen) = shift;

  if ( length($str) <= $maxlen )
  {
    return $str;
  }

  if ( substr($str, 0, $maxlen) =~ /^([