在项目中我们难免会遇到搜索的功能需求,那么今天都已经写了三四篇前台的基本知识点了,我们最后一篇来一个后台的做end吧。

我也是在网上看到一位大神说的(通过汉字区码基本可以获取400多个,剩下的当特殊情况处理),实在不好意,找不到那位大神的id了。通过各位大神的指点来做个优化(写成个工具类),我们直接来看代码吧!

package com.nepo.commons.utils;import java.io.UnsupportedEncodingException;public class ChineseCharToEn {private final static int[] li_SecPosValue = { 1601, 1637, 1833, 2078, 2274,2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858,4027, 4086, 4390, 4558, 4684, 4925, 5249, 5590 };private final static String[] lc_FirstLetter = { "a", "b", "c", "d", "e","f", "g", "h", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s","t", "w", "x", "y", "z" };/*** 调用方法* * @param str 中文串*           * @return 声母串*/public String getAllFirstLetter(String str) {if (str == null || str.trim().length() == 0) {return "";}String _str = "";for (int i = 0; i < str.length(); i++) {_str = _str + this.getFirstLetter(str.substring(i, i + 1));}return _str;}/*** 每个字的首字母* * @param chinese 汉字* @return 返回声母*/public String getFirstLetter(String chinese) {if (chinese == null || chinese.trim().length() == 0) {return "";}chinese = this.conversionStr(chinese, "GB2312", "ISO8859-1");if (chinese.length() > 1) // 判断是不是汉字{int li_SectorCode = (int) chinese.charAt(0); // 汉字区码int li_PositionCode = (int) chinese.charAt(1); // 汉字位码li_SectorCode = li_SectorCode - 160;li_PositionCode = li_PositionCode - 160;int li_SecPosCode = li_SectorCode * 100 + li_PositionCode; // 汉字区位码if (li_SecPosCode > 1600 && li_SecPosCode < 5590) {for (int i = 0; i < 23; i++) {if (li_SecPosCode >= li_SecPosValue[i]&& li_SecPosCode < li_SecPosValue[i + 1]) {chinese = lc_FirstLetter[i];break;}}} else // 非汉字字符,如图形符号或ASCII码{chinese = this.conversionStr(chinese, "ISO8859-1", "GB2312");chinese = chinese.substring(0, 1);}}return chinese;}/*** 字符串编码转换* * @param str*            要转换编码的字符串* @param charsetName*            原来的编码* @param toCharsetName*            转换后的编码* @return 经过编码转换后的字符串*/private String conversionStr(String str, String charsetName,String toCharsetName) {try {str = new String(str.getBytes(charsetName), toCharsetName);} catch (UnsupportedEncodingException ex) {System.out.println("字符串编码转换异常:" + ex.getMessage());}return str;}public static void main(String[] args) {ChineseCharToEn cte = new ChineseCharToEn();System.out.println("获取拼音首字母:" + cte.getAllFirstLetter("北京联席办"));}
}

就是这么简单,小的下班了,谢谢各位大神的路过。小菜在这里把问题留下了,如果那位大神知道如何实现韩文的首字母获取的,还望多多指教,小菜最近被这个问题动了真感情了;

获取中文拼音的首字母,目前为止小菜看到的最简单的方法相关推荐

  1. java获取中文的拼音以及获取中文拼音的首字母

    首先在pom文件中引入依赖 pinyin4j <dependencies><dependency><groupId>com.belerweb</groupId ...

  2. PinYin4j的基本使用 Java获取中文转拼音、获取中文拼音的首字母缩写

    前言 在实际开发中,可能会遇到根据用户输入的中文拼音首字母缩写,来查询对应数据的功能需求,本文将提供一个操作中文转拼音.获取拼音首字母的工具类CV即用. 一.PinYin4j 简介 : pinyin4 ...

  3. java取字符串首字母_java 获取中文字符的首字母

    原理: GB2312编码中的中文是按照拼音排序的 注意: 一些生僻的字无法获得正确的首字母,原因是这些字都是后加入的. import java.io.UnsupportedEncodingExcept ...

  4. wp手机开发之获取汉字拼音的首字母

    wp手机开发之获取汉字拼音的首字母 本文章来介绍一下关于wp手机开发之获取汉字拼音的首字母,以前也有讲过获取汉字全部拼音下面我们来看看教程吧. 今天介绍一种新的方法,使用codeplex上开源的项目G ...

  5. C#获取汉字拼音或首字母

    C#获取汉字拼音或首字母 获取汉字拼音 直接上代码 /// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> // ...

  6. 获取中文汉字英文首字母

    在开发中有时候需要使用某些列进行排序,而中文汉字只是按照第一个汉字进行排序,这个时候就需要每个汉字的首字母组成的字符串进行排序. 源码: /// <summary>/// 中文字符串帮助类 ...

  7. vb 获取汉字拼音的首字母

    vb 获取汉字拼音的首字母 Public Function py(mystr As String) As String i = Asc(mystr) Select Case i Case -20319 ...

  8. mysql获取汉字拼音首字母_MySQL数据库获取汉字拼音的首字母函数

    需求简介:最 近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组的拼音首字母就可以实现了,如果是固定的几个汉字,人为的拼一下就可以 了,不过项目中有多处功能是需要这个效果的, ...

  9. oracle 中文拼音取首字母,ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数...

    当前位置:我的异常网» 数据库 » ORACLE依据中文拼音首字母排序.取得中文拼音首字母 ORACLE依据中文拼音首字母排序.取得中文拼音首字母函数 www.myexceptions.net  网友 ...

最新文章

  1. 浙江python必修课程 2020_智慧职教2020Python程序设计基础章节考试答案
  2. 学python需要什么文化基础-中国文化走的是()的路线。
  3. 通过函数式编程实现动态对话框处理程序
  4. “睡服”面试官系列第十三篇之函数的扩展(建议收藏学习)
  5. 导航栏 UITabBarController等颜色的区别
  6. Linux内核编译与安装[转]
  7. 云初起微方案中下单人、联系人、下载者三者之间是什么关系?
  8. ofd电子文档内容分析工具(分析文档、签章和证书)
  9. 【bioinfo】bbtools:bbmerge 二代测序reads合并工具了解
  10. Janitor/Application Guarder
  11. php正则判断数字和英文,PHP正则匹配中英文、数字及下划线的方法【用户名验证】...
  12. AI 智能皮影机器人
  13. 利用证书签名绕过杀软
  14. 计算机网络知识点全面总结(一篇全懂)
  15. Android中MotionEvent的来源和ViewRootImpl
  16. 如何选择好的软件测试技术?
  17. 联通3g升级4g显示无服务器,中国联通回应关闭2G3G信号 协助2G用户向3G4G网络升级方案 移动关闭2G3G了吗...
  18. 国开计算机组成原理边学边练,国家开放大学-计算机组成原理-形考任务-2017全部答案.docx...
  19. 深入理解 word2vec 原理
  20. rv1126 android,RV1126_RV1109 Rock-X 使用说明

热门文章

  1. 音频基础学习三——声音的时频谱
  2. Skia深入分析8——Skia的GPU绘图
  3. php全选删除文件,一个简单的PHP全选删除数据
  4. 如何向公众号添加的文档的链接
  5. js 字符串转化成数字
  6. Spring Boot 2.3.5.RELEASE正式升级,SpringBoot新版本发布
  7. 手机App分发加速是如何实现的app分发有什么重要作用?cdn资源分配方式是如何分配的?
  8. win10无法设置移动热点的一种解决办法
  9. 六-体系结构 Architecture
  10. 2021年制冷与空调设备运行操作考试总结及制冷与空调设备运行操作实操考试视频