码迷,mamicode.com
首页 > 其他好文 > 详细

[perl]字符串转拼音首字母(支持多音字)

时间:2015-09-26 22:44:15      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:

实现的思路是,查表找到该字的所有读音,然后取首字母.

 

代码:

while (<DATA>) {
  chomp;
  my ($head, $all) = /^(.{3})(.*)$/;
  $all =~ s/^\s+//;
  
  ### 只保留无音标号的首字母
  sub toshorter {
    my $str = $_[0];
    
    $str =~ s/ā|á|ǎ|à/a/g;
    $str =~ s/ē|é|ě|è/e/g;
    $str =~ s/ō|ó|ǒ|ò/o/g;
    
    $str =~ s/^([a-z]).*$/\1/;
    
    return $str;
  };
  
  my @tmp;
  
  for (split ,, $all) {
    push @tmp, toshorter($_);
  }
  
  $all = join ,, @tmp;
  
  ###
  
  $pytable{$head} = $all;
}

sub getheadstr {
  my @str = $_[0] =~ /.{3}/g;
  my @res;
  
  sub loop {
    my ($no, $head) = @_;
    
    for (split ,, $pytable{$str[$no]}) {
      if ($no == $#str) {
        push @res, $head . ‘‘ . $_;
      } else {
        loop($no + 1, $head . ‘‘ . $_);
      }
    }
  }
  
  loop(0, "");
  
  return join ‘ ‘, grep { ++$count{ $_ } < 2; } @res; 
}

print getheadstr("乐筠");

__DATA__
此处数据为我的上一篇博文的内容,省略

 

数据在此

[perl]字符串转拼音首字母(支持多音字)

标签:

原文地址:http://www.cnblogs.com/jt2001/p/perl-str-to-pinyin-head.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!