博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java取出汉字字符串的拼音首字母
阅读量:2454 次
发布时间:2019-05-10

本文共 2796 字,大约阅读时间需要 9 分钟。

 

import java.lang.*;     public class GB2Alpha {         //字母Z使用了两个标签,这里有27个值       //i, u, v都不做声母, 跟随前面的字母       private char[] chartable =               {                   '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈',                   '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然',                   '撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', '座'              };         private char[] alphatable =               {                   'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',                     'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'              };           private int[] table = new int[27];         //初始化       {           for (int i = 0; i < 27; ++i) {               table[i] = gbValue(chartable[i]);           }       }         public GB2Alpha() {         }         //主函数,输入字符,得到他的声母,       //英文字母返回对应的大写字母       //其他非简体汉字返回 '0'         public char Char2Alpha(char ch) {             if (ch >= 'a' && ch <= 'z')               return (char) (ch - 'a' + 'A');           if (ch >= 'A' && ch <= 'Z')               return ch;               int gb = gbValue(ch);           if (gb < table[0])               return '0';               int i;           for (i = 0; i < 26; ++i) {               if (match(i, gb))                   break;           }             if (i >= 26)               return '0';           else              return alphatable[i];       }         //根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串       public String String2Alpha(String SourceStr) {           String Result = "";           int StrLength = SourceStr.length();           int i;           try {               for (i = 0; i < StrLength; i++) {                   Result += Char2Alpha(SourceStr.charAt(i));               }           } catch (Exception e) {               Result = "";           }           return Result;       }         private boolean match(int i, int gb) {           if (gb < table[i])               return false;             int j = i + 1;             //字母Z使用了两个标签           while (j < 26 && (table[j] == table[i]))               ++j;             if (j == 26)               return gb <= table[j];           else              return gb < table[j];         }         //取出汉字的编码       private int gbValue(char ch) {           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) {           com.mkrx.GB2Alpha obj1 = new com.mkrx.GB2Alpha();           System.out.println(obj1.String2Alpha("测试:中华人民共和国!"));           return;       }   }

 

转载地址:http://dgbhb.baihongyu.com/

你可能感兴趣的文章
fedora28 阿里云_Fedora 21带给开源云的6件事
查看>>
go开源项目整理-新手篇_一周的前5篇文章:您正在从事什么开源项目?
查看>>
一周前五篇文章:Hadoop,Facebook和CERN
查看>>
黄金时代 李银河_一周前五篇文章:开发人员的黄金时代
查看>>
一周前五篇文章:我们非常喜欢Raspberry Pi B +
查看>>
天气小程序 github_一周前五名:GitHub上的免费书籍和开放多云的天气
查看>>
排名前5的文章:适用于您的食物的Linux,面向Docker用户的提示等
查看>>
您不懂JavaScript,但您应该
查看>>
闪存驱动器_仅使用闪存驱动器即可测试Linux
查看>>
锡晶须啤酒厂打破了秘密食谱的趋势
查看>>
openstack 存储_软件定义的存储对OpenStack意味着什么
查看>>
taiga项目管理_Taiga,一种注重可用性的新型开源项目管理工具
查看>>
Google Analytics(分析)的前3种开源替代品
查看>>
facebook 开源_一周前五篇文章:Facebook,Samsung和HP的开源
查看>>
为Docker带来新的安全功能
查看>>
在OpenStack上试用WordPress 4.0
查看>>
本周最热门的5篇文章:WordPress 4.0,FarmBot和Docker安全性
查看>>
资产发现开源工具_开源工具可帮助孩子们发现数字创造力
查看>>
ansible开源ui_本周热门文章5:丰富的开源工具! 和Ansible的崛起
查看>>
arduino智能锁_学生使用Arduino构建智能设备和科学仪器
查看>>