public class FirstLetterUti {private static int BEGIN = 45217;private static int END = 63486;// 按照声母表示,这个表是在GB2312中的出现的第一个汉字,也就是说“啊”是代表首字母a的第一个汉字。// i, u, v都不做声母, 自定规则跟随前面的字母private static char[] chartable = {'啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈','哈', '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒', '塌', '塌','塌', '挖', '昔', '压', '匝',};// 二十六个字母区间对应二十七个端点// GB2312码汉字区间十进制表示private static int[] table = new int[27];// 对应首字母区间表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',};// 初始化static {for (int i = 0; i < 26; i++) {table[i] = gbValue(chartable[i]);// 得到GB2312码的首字母区间端点表,十进制。}table[26] = END;// 区间表结尾}/*** 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 最重要的一个方法,思路如下:一个个字符读入、判断、输出*/public static String getFirstLetter(String sourceStr) {String result = "";String str = sourceStr.toLowerCase();int StrLength = str.length();int i;try {for (i = 0; i < StrLength; i++) {result += Char2Initial(str.charAt(i));}} catch (Exception e) {result = "";}return result;}/*** 输入字符,得到他的声母,英文字母返回对应的大写字母,其他非简体汉字返回 '0'*/private static char Char2Initial(char ch) {// 对英文字母的处理:小写字母转换为大写,大写的直接返回if (ch >= 'a' && ch <= 'z') {return ch;}if (ch >= 'A' && ch <= 'Z') {return ch;}// 对非英文字母的处理:转化为首字母,然后判断是否在码表范围内,// 若不是,则直接返回。// 若是,则在码表内的进行判断。int gb = gbValue(ch);// 汉字转换首字母if ((gb < BEGIN) || (gb > END))// 在码表区间之前,直接返回{return ch;}int i;for (i = 0; i < 26; i++) {// 判断匹配码表区间,匹配到就break,判断区间形如“[,)”if ((gb >= table[i]) && (gb < table[i + 1])) {break;}}if (gb == END) {//补上GB2312区间最右端i = 25;}return initialtable[i]; // 在码表区间中,返回首字母}/*** 取出汉字的编码 cn 汉字*/private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。String str = new String();str += ch;try {byte[] bytes = str.getBytes("GB2312");if (bytes.length < 2) {return 0;}return (bytes[0] << 8 & 0xff00) + (bytes[1] & 0xff);} catch (Exception e) {return 0;}}public static void main(String[] args) {//取出汉字的第一个字的首字母后变大写String allString = getFirstLetter("张学友");String nameFirstLetter = String.valueOf(allString.charAt(0));System.out.println(nameFirstLetter.toUpperCase());//如果姓名本身是英文名的话,直接输出英文名字System.out.println(getFirstLetter("luoyabin"));}}

汉字姓名怎么取到姓名的汉语拼音首字母相关推荐

  1. 工具类-汉字转为汉语拼音首字母

    汉字转换为汉语拼音首字母,英文字符不变,特殊字符丢失 支持多音字,生成方式如(长沙市长:cssc,zssz,zssc,cssz) 首先需Pinyin4j的jar包,代码如下,可直接使用 public ...

  2. 项目小方便--取汉语拼音首字母和字符串比较函数

    壹:取汉语拼音首字母的函数 在做工程项目建模的时候,我们时常用字段的汉语拼音首字母来定义列名;如果手工取下来将是一件非常烦人的工作;此函数就用来取汉字的汉语拼音首字母,解决我们头疼的问题 代码如下: ...

  3. java汉字转拼音和获取汉语拼音首字母

    需要加入的jar包 <!-- pinyin4j --><dependency><groupId>com.belerweb</groupId><ar ...

  4. 汉语拼音首字母处理工具类

    文章目录 1.正则表达式来判断字符串中是否包含字母 2.获得汉字首字母(通常用作通讯录检索) 3.获得汉语拼音首字母简称 4.将字符串中的中文转化为拼音,英文字符不变 5.汉字转换位汉语拼音首字母,英 ...

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

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. Mysql按照汉语拼音首字母A-Z排序

    Mysql按照汉语拼音首字母A-Z排序 select * from configuration ORDER BY CONVERT(configuration.name USING GBK) asc; ...

  7. sql根据汉字内容自动产生拼音和五笔首字母

    CREATE FUNCTION fun_hong_py(@nr VARCHAR(1000)) RETURNS @temp TABLE(pyall VARCHAR(10),wball VARCHAR(1 ...

  8. mysql 拼音首字母_MySQL 获取某个字段的汉语拼音首字母 - 文章

    在做一个商城的时候,需要用户能有切换城市的功能,城市列表按照汉语拼音首字母排序,城市的数据是从国家统计局扒下来的,只有城市的编码和城市的名称,通过下面的 MySQL 函数,获取某个汉语的首字母. CR ...

  9. python3汉字转拼音后汉语拼音首字母大写

    首先先装pypinyin类库 pip install pypinyin 导入类库 import pypinyin def HanYuZhuanPinYinShouZiMuDaXie(word):#汉字 ...

最新文章

  1. 计算机图形学画圆vc代码,计算机图形学实验--完整版-带结果--vc++实现.doc
  2. 详解Linux Initrd
  3. Linux系统及编程期末试题,《LINUX系统及其编程》考试试题及答案.doc
  4. Java注解--Java深度历险(转)
  5. LAMP+LNMP(一) LAMP架构概述
  6. VUE 全局监听sessionStorage变化
  7. Android开发中如何调用摄像头的功能
  8. Chrome扩展 - 百度识图
  9. matlab排序excel数据库,matlab对excel数据进行排序求和
  10. 计算机网络之五:基本器件(网卡,集线器,交换机,路由器)
  11. c语言算兔子野鸡,“上山兔子下山鸡,离水甲鱼不要追”,有什么科学依据?...
  12. 电脑接html线没反应,笔记本插上网线没反应怎么办【解决方法】
  13. android视频动态壁纸app,手机壁纸视频动态壁纸
  14. Three.js入门——画星空(star field)
  15. 对数函数 (logarithmic function)
  16. 支持tcam的服务器,一种支持TCAM规则更新和压缩方法.doc
  17. 黑客攻击第一步你知道是啥吗?
  18. Deepin系统应用商店 不可用 解决办法
  19. KCNA考试 第五章:kubernetes学习实践
  20. 递归算法与非递归算法比较

热门文章

  1. 分组折线图、柱状图实现(多条折线图、柱状图同时显示)实现方式
  2. Windows如何连接远程桌面?远程桌面控制软件推荐
  3. 行人重识别 (Re-ID)数据集介绍
  4. 1602液晶显示屏显示字符
  5. WIN间远程桌面连接:你的凭据不工作解决(亲测有效)
  6. Java开发中OnlyOffice、OpenOffice和LibreOffice怎么选?
  7. 手机版kali nethunter刷入
  8. 操作系统-复习-考题预测及解析-期中考试
  9. 关系代数至少选修两门课_高中化学:选修三or选修五——一个帮你节省三个月的复习时间的重要选择(本文无图,浮躁慎入)...
  10. mac转换助理安装Windows11