1. 本文属于http://java.chinaitlab.com/base/803353.html原创!!!
  2.  
  3. public class PinYin2Abbreviation {
  4.  
  5. // 简体中文的编码范围从B0A1(45217)一直到F7FE(63486)
  6. private static int BEGIN = ;
  7. private static int END = ;
  8.  
  9. // 按照声 母表示,这个表是在GB2312中的出现的第一个汉字,也就是说“啊”是代表首字母a的第一个汉字。
  10. // i, u, v都不做声母, 自定规则跟随前面的字母
  11. private static char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈', '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', };
  12.  
  13. // 二十六个字母区间对应二十七个端点
  14. // GB2312码汉字区间十进制表示
  15. private static int[] table = new int[];
  16.  
  17. // 对应首字母区间表
  18. private static char[] initialtable = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 't', 't', 'w', 'x', 'y', 'z', };
  19.  
  20. // 初始化
  21. static {
  22. for (int i = ; i < ; i++) {
  23. table[i] = gbValue(chartable[i]);// 得到GB2312码的首字母区间端点表,十进制。
  24. }
  25. table[] = END;// 区间表结尾
  26. }
  27.  
  28. // ------------------------public方法区------------------------
  29. // 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 最重要的一个方法,思路如下:一个个字符读入、判断、输出
  30.  
  31. public static String cn2py(String SourceStr) {
  32. String Result = "";
  33. int StrLength = SourceStr.length();
  34. int i;
  35. try {
  36. for (i = ; i < StrLength; i++) {
  37. Result += Char2Initial(SourceStr.charAt(i));
  38. }
  39. } catch (Exception e) {
  40. Result = "";
  41. e.printStackTrace();
  42. }
  43. return Result;
  44. }
  45.  
  46. // ------------------------private方法区------------------------
  47. /**
  48. * 输入字符,得到他的声母,英文字母返回对应的大写字母,其他非简体汉字返回 '0'   *   
  49. */
  50. private static char Char2Initial(char ch) {
  51. // 对英文字母的处理:小写字母转换为大写,大写的直接返回
  52. if (ch >= 'a' && ch <= 'z') {
  53. return (char) (ch - 'a' + 'A');
  54. }
  55. if (ch >= 'A' && ch <= 'Z') {
  56. return ch;
  57. }
  58. // 对非英文字母的处理:转化为首字母,然后判断是否在码表范围内,
  59. // 若不是,则直接返回。
  60. // 若是,则在码表内的进行判断。
  61. int gb = gbValue(ch);// 汉字转换首字母
  62. if ((gb < BEGIN) || (gb > END))// 在码表区间之前,直接返回
  63. {
  64. return ch;
  65. }
  66. int i;
  67. for (i = ; i < ; i++) {// 判断匹配码表区间,匹配到就break,判断区间形如“[,)”
  68. if ((gb >= table[i]) && (gb < table[i + ])) {
  69. break;
  70. }
  71. }
  72. if (gb == END) {// 补上GB2312区间最右端
  73. i = ;
  74. }
  75. return initialtable[i]; // 在码表区间中,返回首字母
  76. }
  77.  
  78. /**
  79. * 取出汉字的编码 cn 汉字   
  80. */
  81. private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。
  82. String str = new String();
  83. str += ch;
  84. try {
  85. byte[] bytes = str.getBytes("GB2312");
  86. if (bytes.length < ) {
  87. return ;
  88. }
  89. return (bytes[] << & 0xff00) + (bytes[] & 0xff);
  90. } catch (Exception e) {
  91. return ;
  92. }
  93. }
  94.  
  95. public static void main(String[] args) throws Exception {
  96. System.out.println(cn2py("重庆重视发展IT行业,大多数外企,如,IBM等进驻山城"));
  97. }
  98. }

java获取多个汉字的拼音首字母的更多相关文章

  1. C#获取包括一二级汉字的拼音 首字母

    C#获取包括一二级汉字的拼音 首字母 声母 汉字拼音转换 using System; using System.Collections.Generic; using System.Linq; usin ...

  2. (转载)delphi中获取汉字的拼音首字母

    delphi中获取汉字的拼音首字母1.py: array[216..247] of string = ({216}'CJWGNSPGCGNESYPB' + 'TYYZDXYKYGTDJNMJ' + ' ...

  3. 汉字转拼音首字母的java实现

    工作中经常会遇到的一些排序问题,比如 按汉字的拼音首字母排序,比如人名排序等,就要用到下面的方法了,思路: 1. 获得汉字 2. 将汉字转换成首字母,并记录下(必要时保存到数据库) 3. 按首字母进行 ...

  4. sql获取汉字的拼音首字母的函数

    ql获取汉字的拼音首字母   if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and ...

  5. C# 获取汉字的拼音首字母和全拼(含源码)

    C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手 ...

  6. 获取汉字的拼音首字母--pinyin

    var pinyin = (function (){ var Pinyin = function (ops){ this.initialize(ops); }, options = { checkPo ...

  7. js汉字转拼音首字母

    js汉字转拼音首字母 2018-04-09 阅读 1018 收藏 1 原链:segmentfault.com 分享到:   前端必备图书<JavaScript设计模式与开发实践> > ...

  8. SqlServer 汉字转换拼音首字母函数

    CREATE function [dbo].[Func_GetPY](@str nvarchar(4000))returns nvarchar(4000)asbegin set @str=RTRIM( ...

  9. 简单测试--C#实现中文汉字转拼音首字母

    第一种: 这个是自己写的比较简单的实现方法,要做汉字转拼音首字母,首先应该有一个存储首字母的数组,然后将要转拼音码的汉字与每个首字母开头的第一个汉字即“最小”的汉字作比较,这里的最小指的是按拼音规则比 ...

随机推荐

  1. c# 查找一个字符串在另一个字符串出现的次数

    方法一: string test = "FF FF FF FF 01 00 82 00 00 A2 00 00 FB 07 FF FF FF FF 01 00 82 00 00 A2 00 ...

  2. css页面缩放

    如果原来的宽度是1200, 缩放之后宽度可能就变成了1560, 然后你本来的图片1200可能就开始显示不全了. 如果你的图片按100%显示的话,这个时候又正常了.

  3. python argpase模块简单使用

    python2.7 手册地址:https://docs.python.org/2/howto/argparse.html#id1 实现效果:脚本程序可以带参数 python arg.py -h 一.位 ...

  4. 绑定自己Self

    Header="{Binding Path=Command.Text, RelativeSource={RelativeSource Self}}"/>

  5. js执行环境、作用域

    js执行环境.作用域 执行环境:是javascript中的一个重要的概念,<javascript高级程序设计第三版>的定义是:执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行 ...

  6. 【译】:lxml.etree官方文档

    本文翻译自:http://lxml.de/tutorial.html, 作者:Stefan Behnel 这是一个关于使用lxml.etree进行XML处理的教程.它简要介绍了ElementTree ...

  7. fasttext和cnn的比较,使用keras imdb看效果——cnn要慢10倍。

    fasttext: '''This example demonstrates the use of fasttext for text classification Based on Joulin e ...

  8. ElasticSearch_学习_01_单实例安装与分布式安装

    一.前言 二.下载 1.下载地址 https://www.elastic.co/downloads/past-releases 三.单实例安装 直接解压,window下运行 elasticsearch ...

  9. 进程、线程、ThreadLlocal

    1.线程是最小的执行单位,而进程中至少一个线程组:如果调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间 Unix/Linux操作系统提供了一个fork()系统调用,它非常 ...

  10. loj #6247. 九个太阳

    求 $\sum\limits_{i=1}^n [k | i] \times C_n^i$ 膜 $998244353$ $n \leq 10^{15},k \leq 2^{20}$ $k$ 是 $2$ ...