问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用java获取中文拼音的首字母

发布网友 发布时间:2022-04-22 05:46

我来回答

1个回答

热心网友 时间:2022-04-15 03:48

import java.io.UnsupportedEncodingException;
/**
* 取得给定汉字串的首字母串,即声母串
* Title: ChineseCharToEn
* @date 2004-02-19 注:只支持GB2312字符集中的汉字
*/
public final 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("北京联席办"));
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桃李芬芳的近义词是? 请会答正确。 急... 墨西哥很混乱吗 为什么我的OPPOR9手机连接到任何蓝牙设备放歌曲,都没有办法在蓝牙设备... OPPOA9如何连接酷狗与手机蓝牙? 华为荣耀3X 白色畅玩版的声音调至最大声仍很小声 荣耀3x刷机后卸载了一些系统软件,然后就无法开机,一直停留在开机界面... 平安富赢金生年金保险值得买吗?最全产品测评! 收音机音量旋钮音量最大还是小 德生pl_450收音机音量电位器声音惑大惑小,电位器的型号是什么_百度知 ... 浙江金融学院有什么专业 怎样睡觉才不会做梦呢? 主板可以用水清洗吗? lf2怎么修改武器 晚上睡觉怎么就不会做梦了 海钓容易晕船吗? 韩国爆发一种比新冠更可怕的感染病是真的吗? 为什么我不会做梦 有人去过汕头的南澳岛吗?好玩吗? 什么是腺病毒 电脑主板可以用水清洗么 为什么有时候我们晚上睡觉不会做梦呢? 怎样才不会做梦 南澳 海钓 经过心理专家分析,哪一些人晚上几乎不会做梦? 为什么有的人睡觉会经常做梦,有的人则不会?梦多... 不会做梦是怎么回事 为什么会不作梦 为什么有的人不爱做梦? 为什么有人睡觉不做梦 为什么我不会做梦呢? 广东南澳岛,有“海上互市”的称号,现在怎样? 带撇的字有哪些字 有不会做梦的人吗? 求关于3D打印技术应用的视频! 意大利中国人去巴西 我每天睡觉从来不会做梦是怎么回事? 电脑主板被水冲洗过怎么办? 哪里可以看到3D打印的教程视频 java怎么根据汉字获取字的拼音首字母 关于埃及法老的几个问题 想学习3D打印技术,不知道哪里有比较全面的视频可... 电脑主板脏了怎么清洗? 古埃及第一王朝至三十三王朝法老列表 3D打印技术科普之什么是3DP技术,3DP技术的应用 JAVA怎么念 双双金鹧鸪中的鹧鸪象征什么 ITR 9注册过商标吗?还有哪些分类可以注册? 3D打印的原理是什么? 怎样睡觉才不会做梦? 征求濒危野生动物图片