[perl]字符串转拼音首字母(支持多音字)
实现的思路是,查表找到该字的所有读音,然后取首字母.
代码:
while (<DATA>) {
  chomp;
  my ($head, $all) = /^(.{})(.*)$/;
  $all =~ s/^\s+//;
  ### 只保留无音标号的首字母
  sub toshorter {
    my $str = $_[];
    $str =~ s/ā|á|ǎ|à/a/g;
    $str =~ s/ē|é|ě|è/e/g;
    $str =~ s/ō|ó|ǒ|ò/o/g;
    $str =~ s/^([a-z]).*$/\/;
    return $str;
  };
  my @tmp;
  for (split ',', $all) {
    push @tmp, toshorter($_);
  }
  $all = join ',', @tmp;
  ###
  $pytable{$head} = $all;
}
sub getheadstr {
  @str = $_[] =~ /.{}/g;
  @res = ();
  sub loop {
    my ($no, $head) = @_;
    for (split ',', $pytable{$str[$no]}) {
      if ($no == $#str) {
        push @res, $head . $_;
      } else {
        loop($no + , $head . $_);
      }
    }
  }
  loop(, "");
  undef %count;
  return join ' ', grep { ++$count{ $_ } < ; } @res;
}
print "乐筠: " . getheadstr("乐筠") . "\n";
print "梁炜: " . getheadstr("梁炜") . "\n";
__DATA__
数据太长,另附
[perl]字符串转拼音首字母(支持多音字)的更多相关文章
- asp.net 获取汉字字符串的拼音首字母,含多音字
		需求:在很多时候数据查询的时候,我们希望输入某个人姓名的拼音首字母进行查询,例如“潘长江”,输入“pcj”,就能搜索潘长江相关信息. 实现: #region 获取汉字转换拼音 首字母 public s ... 
- MySQL通过函数获取字符串汉字拼音首字母大写字符串
		DELIMITER $$ DROP FUNCTION IF EXISTS `Fun_GetPY`$$ CREATE FUNCTION `HIS`.`Fun_GetPY` (in_string VARC ... 
- sql中文字符串获取拼音首字母
		SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO )) ) as begin ),) set @PY='' begin ) --如果非汉字字符,返回原字 ... 
- sqlserver取字符串拼音首字母
		sqlserver 使用函数获取一个字符串的拼音首字母 create function dbo.fn_getpinyin ( @str nvarchar(max) ) returns nvarchar ... 
- js汉语转拼音(全拼、首字母、拼音首字母)
		新建js文件first_alphabet.js // JavaScript Document // 汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell //函数使 ... 
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)
		AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实 ... 
- 取字符串拼音首字母(js)
		//取字符串拼音首字母 function makePy(str) { if (typeof(str) != "string") throw new Error(-1, " ... 
- 【Solr】 solr对拼音搜索和拼音首字母搜索的支持
		问:对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输入拼音和拼音首字母就给出商品的信息,怎么办呢? 实现方式有2种,但是他们其实是对应的. 用lucene实现 1.建索引, 多建一个索引字段 ... 
- Js中文排序(拼音首字母)
		演示地址:http://lar5.sinaapp.com/ 1.index.html <html xmlns="http://www.w3.org/1999/xhtml"&g ... 
随机推荐
- bzoj 3110 K大数查询
			第一道整体二分,因为只需要知道每个询问区间中比mid大的数有多少个,就可以直接用线段树区间加,区间求和了. #include<iostream> #include<cstdio> ... 
- gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
			参考打包教程: http://www.cnblogs.com/tugenhua0707/p/4069769.html http://www.cnblogs.com/tugenhua0707/p/498 ... 
- ajax之 get post请求
			get请求 function get(){ $.get( "./Aservlet?id=5", function(data, textStatus, jqXHR){ $(" ... 
- Codeforces 2016 ACM Amman Collegiate Programming Contest B. The Little Match Girl(贪心)
			传送门 Description Using at most 7 matchsticks, you can draw any of the 10 digits as in the following p ... 
- 【原】理解javascript中的this
			最近的文章基本都是总结javascript基础内容的,因为我觉得这些东西很重要.而且很多时候你觉得你理解了,其实并没有你自认为的那么理解.十月份没怎么写文章,因为国庆出去玩的比较久,心变野了,现在是时 ... 
- Win7旗舰版-X86-X64-快速装机版
			装机版作品简介 Win7 32/64位旗舰版 6.5z 专注于Win7,致力于做更好用的系统!一如既往的品质,不流氓,不欺骗,不夸大!一直在改进,只为做得更好!万千用户的信赖,作者的品质保证! 作品摘 ... 
- Web jquery表格组件 JQGrid 的使用 - 5.Pager翻页、搜索、格式化、自定义按钮
			系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ... 
- C# 4.0 之线程安全集合篇
			资料:http://www.cnblogs.com/chengxiaohui/articles/5672768.html 
- mysql 存储引擎
			什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等 ... 
- ASP.NET Session 详解
			阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了 ... 
