`
阿尔萨斯
  • 浏览: 4181623 次
社区版块
存档分类
最新评论

JAVA获取中文名字的首字母

 
阅读更多

http://blog.csdn.net/leeyefang/article/details/9082255

1、调用FirstLetterUtil类的getFirstLetter()方法,获取姓名的首字母。如:“阿鲁卓玛”获取首字母是“alzm”。

String firstLetter = FirstLetterUtil.getFirstLetter(“阿鲁卓玛”);

2、代码,如下:

  1. publicclassFirstLetterUtil{
  2. privatestaticintBEGIN=45217;
  3. privatestaticintEND=63486;
  4. //按照声母表示,这个表是在GB2312中的出现的第一个汉字,也就是说“啊”是代表首字母a的第一个汉字。
  5. //i,u,v都不做声母,自定规则跟随前面的字母
  6. privatestaticchar[]chartable={'啊','芭','擦','搭','蛾','发','噶','哈',
  7. '哈','击','喀','垃','妈','拿','哦','啪','期','然','撒','塌','塌',
  8. '塌','挖','昔','压','匝',};
  9. //二十六个字母区间对应二十七个端点
  10. //GB2312码汉字区间十进制表示
  11. privatestaticint[]table=newint[27];
  12. //对应首字母区间表
  13. privatestaticchar[]initialtable={'a','b','c','d','e','f','g',
  14. 'h','h','j','k','l','m','n','o','p','q','r','s','t',
  15. 't','t','w','x','y','z',};
  16. //初始化
  17. static{
  18. for(inti=0;i<26;i++){
  19. table[i]=gbValue(chartable[i]);//得到GB2312码的首字母区间端点表,十进制。
  20. }
  21. table[26]=END;//区间表结尾
  22. }
  23. /**
  24. *根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串最重要的一个方法,思路如下:一个个字符读入、判断、输出
  25. */
  26. publicstaticStringgetFirstLetter(StringsourceStr){
  27. Stringresult="";
  28. Stringstr=sourceStr.toLowerCase();
  29. intStrLength=str.length();
  30. inti;
  31. try{
  32. for(i=0;i<StrLength;i++){
  33. result+=Char2Initial(str.charAt(i));
  34. }
  35. }catch(Exceptione){
  36. result="";
  37. }
  38. returnresult;
  39. }
  40. /**
  41. *输入字符,得到他的声母,英文字母返回对应的大写字母,其他非简体汉字返回'0'
  42. */
  43. privatestaticcharChar2Initial(charch){
  44. //对英文字母的处理:小写字母转换为大写,大写的直接返回
  45. if(ch>='a'&&ch<='z'){
  46. returnch;
  47. }
  48. if(ch>='A'&&ch<='Z'){
  49. returnch;
  50. }
  51. //对非英文字母的处理:转化为首字母,然后判断是否在码表范围内,
  52. //若不是,则直接返回。
  53. //若是,则在码表内的进行判断。
  54. intgb=gbValue(ch);//汉字转换首字母
  55. if((gb<BEGIN)||(gb>END))//在码表区间之前,直接返回
  56. {
  57. returnch;
  58. }
  59. inti;
  60. for(i=0;i<26;i++){//判断匹配码表区间,匹配到就break,判断区间形如“[,)”
  61. if((gb>=table[i])&&(gb<table[i+1])){
  62. break;
  63. }
  64. }
  65. if(gb==END){//补上GB2312区间最右端
  66. i=25;
  67. }
  68. returninitialtable[i];//在码表区间中,返回首字母
  69. }
  70. /**
  71. *取出汉字的编码cn汉字
  72. */
  73. privatestaticintgbValue(charch){//将一个汉字(GB2312)转换为十进制表示。
  74. Stringstr=newString();
  75. str+=ch;
  76. try{
  77. byte[]bytes=str.getBytes("GB2312");
  78. if(bytes.length<2){
  79. return0;
  80. }
  81. return(bytes[0]<<8&0xff00)+(bytes[1]&0xff);
  82. }catch(Exceptione){
  83. return0;
  84. }
  85. }
  86. }
分享到:
评论

相关推荐

    java中汉字得到首字母大写

    java中汉字得到首字母大写 一般得到姓名的第一个字母时用得到! 很实用。

    java获取拼音首字母

    用于获取中文首字母,特别是中文姓名缩写,其中包含main函数,可以直接测试运行

    Java获取汉字对应的拼音(全拼或首字母)

    主要介绍了Java如何获取汉字对应的拼音(全拼或首字母),文中实现的方法是引用了pinyin4j-2.5.0.jar,然后给出了完整的示例代码,有需要的朋友可以参考借鉴,下面来一起看看吧。

    Java名字获取拼音

    java姓名获取拼音,里面有完整的使用例子。

    javascript实现获取中文汉字拼音首字母

    今天分享一个日常开发中可能会用到的一个小功能,简单说就是输入中文汉字可转换得到中文汉字拼音首字母。当然我可写不出这样的功能,源码来自于其他民间大神的分享,博主在此记录一下功能demo,方便日后复用,同时...

    Groovy中文版教程

    Groovy in action中文版,与java无缝集成的快速脚本语言

    Android开发人员不得不收集的代码

    获取移动网络运营商名称 getNetworkOperatorName 获取移动终端类型 getPhoneType 获取当前的网络类型(WIFI,2G,3G,4G) getNetWorkType getNetWorkTypeName 手机相关→PhoneUtils.java 判断设备是否是手机 isPhone ...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名) 12.app接口(支持与其它语言数据交互) 12.极光推送 (推送给APP及时消息,APP不启动也能收到) 14.微信接口(身份...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 oracle版本_spring3.0

    根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名) 12.app接口(支持与其它语言数据交互) 12.极光推送 (推送给APP及时消息,APP不启动也能收到) 14.微信接口(身份...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

Global site tag (gtag.js) - Google Analytics