+ -
当前位置:首页 → 问答吧 → Perl 字符串处理

Perl 字符串处理

时间:2010-12-03

来源:互联网

  1. #!/usr/bin/perl -w
  2. use strict;
  3. my $str="我们一起看云去";
  4. my $values=&subst($str);
  5. my $str_len;
  6. sub subst {
  7.         my  $str="$_[0]";
  8.         $str_len = length($str);
  9.         my $value= substr $str,0,20;
  10.         return $value;
  11. }

  12. print $str_len, "\n\n";
  13. print "$values\n";
复制代码


现在有这么窜代码,是用来截取字符串的当我设置字符窜大小范围是0到20个字节。  当$str字符窜是21个字节后打印出来的最后一个变成了乱码,请问下这个怎么处理。

作者: mitmax   发布时间: 2010-12-03

自己看你程序的字节码,vim 有 :%!xxd 别的不知道

作者: zhlong8   发布时间: 2010-12-03

没明白你说什么

作者: mitmax   发布时间: 2010-12-03

utf8是3个字节,20个字节只能取到前6个字和第7个字的2/3

作者: 昭襄王   发布时间: 2010-12-03

本帖最后由 mitmax 于 2010-12-03 10:48 编辑


QUOTE:
utf8是3个字节,20个字节只能取到前6个字和第7个字的2/3
昭襄王 发表于 2010-12-03 10:40




   能否帮忙直接改下、当然里面不全是纯汉字,也有字符等等比如 . 123

作者: mitmax   发布时间: 2010-12-03



QUOTE:
能否帮忙直接改下、当然里面不全是纯汉字,也有字符等等比如 . 123
mitmax 发表于 2010-12-03 10:46




    办法在多数语言都是一致的吧
  1. #! /usr/bin/perl
  2. #pl026
  3. use Encode ;
  4. $str = decode("utf8","我们一起123看云去");
  5. print length($str),"\n";
  6. print encode("utf8",substr($str,0,7)),"\n";
复制代码
./pl026
10
我们一起123

作者: 昭襄王   发布时间: 2010-12-03

热门下载

更多