import java.io.UnsupportedEncodingException;

/**
* 获取拼音码
*
* @author xmj
*
*/
public class GetPinyinCode { private final static char[] en_char_Upper = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'W', 'X', 'Y', 'Z' };
private final static int[] posValue = { 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 int[] posValue2 = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 49062,
49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52980, 53689, 54481, 55290 }; /**
* 获取字符串的大小写拼音码,true为大写
*
* @param strChinese
* @param bUpCase
* @return
*/
public static String getPYIndexStr(String strChinese, boolean bUpCase) {
try {
StringBuffer buffer = new StringBuffer(); byte[] b = strChinese.getBytes("GBK"); int i = 0;
while (i < b.length) {
if ((b[i] & 0xFF) > 128) {
int char1 = b[(i++)] & 0xFF;
char1 <<= 8;
int chart = char1 + (b[i] & 0xFF);
buffer.append(getPYIndexChar((char) chart, bUpCase));
} else {
char c = (char) b[i];
if (!Character.isJavaIdentifierPart(c))
c = '?';
buffer.append(c);
}
i++;
}
return buffer.toString();
} catch (Exception e) {
System.out.println("取中文拼音有错" + e.getMessage());
}
return null;
} /**
* 获取字符
*
* @param strChinese
* @param bUpCase
* @return
*/
private static char getPYIndexChar(char strChinese, boolean bUpCase) {
int charGBK = strChinese;
char result = '~';
if (charGBK > 45216 && charGBK < 55290) {
for (int i = 0; i < 23; i++) {
if (charGBK >= posValue2[i] && charGBK < posValue2[i + 1]) {
result = en_char_Upper[i];
break;
}
}
}
if (!bUpCase)
result = Character.toLowerCase(result);
return result;
} /**
* 获取字符串的大小写拼音码,true为大写
*
* @param str
* @param bUpCase
* @return
*/
public static String getPYIndexStr2(String strChinese, boolean bUpCase) {
if (strChinese == null || strChinese.trim().length() == 0) {
return "";
}
String result = "";
for (int i = 0; i < strChinese.length(); i++) {
try {
result = result + getFirstLetter(strChinese.substring(i, i + 1), bUpCase);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return result;
} /**
* 取得给定汉字的首字母,true为大写
*
* @param chinese
* @param bUpCase
* @return
* @throws UnsupportedEncodingException
*/
private static String getFirstLetter(String strChinese, boolean bUpCase) throws UnsupportedEncodingException {
if (strChinese == null || strChinese.trim().length() == 0) {
return "";
}
strChinese = new String(strChinese.getBytes("GB2312"), "ISO8859-1");
if (strChinese.length() > 1) {
int ch_area_code = (int) strChinese.charAt(0) - 160;// 汉字区码
int ch_bit_code = (int) strChinese.charAt(1) - 160; // 汉字位码
int ch_code = ch_area_code * 100 + ch_bit_code; // 汉字区位码
if (ch_code > 1600 && ch_code < 5590) {
for (int i = 0; i < 23; i++) {
if (ch_code >= posValue[i] && ch_code < posValue[i + 1]) {
char a = en_char_Upper[i];
if (!bUpCase)
a = Character.toLowerCase(a);
strChinese = String.valueOf(a);
break;
}
}
} else {
strChinese = new String(strChinese.getBytes("ISO8859"), "GB2312");
strChinese = strChinese.substring(0, 1);
}
}
return strChinese;
} }

测试一下

Java获取汉字的大小写拼音码(汉字的拼音首字母)的更多相关文章

  1. JAVA将汉字转换为全拼以及返回中文的首字母,将字符串转移为ASCII码

    import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseT ...

  2. java 汉语转拼音(全拼,首字母)

    import java.util.*; import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.for ...

  3. js汉语转拼音(全拼、首字母、拼音首字母)

    新建js文件first_alphabet.js // JavaScript Document // 汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell //函数使 ...

  4. 关于java中实现在oracle数据库中实现对中文首字母进行排序的解决方案

    首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值     SCHINESE_RADICAL_M ...

  5. Java序列化,解决字段为null与序列化后首字母变小写问题

    fastjson.jar package com.apt.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.se ...

  6. java获取Json和http状态码

    最近再做接口自动化测试,其中有几个方法比较重要 1.获取http状态码 /* * 返回接口状态码 * */ public static String getHttpCode(String url) { ...

  7. Java获取字符串的CRC8校验码(由C程序的代码修改为了Java代码)

    CRC8算法请百度,我也不懂,这里只是把自己运行成功的结构贴出来了.方法CRC8_Tab这里没有处理,因为我的程序中没有用到. package com.crc; public class CCRC8_ ...

  8. php 中文转拼音,可以只转首字母,可以设置utf8、gbk

    <?php class Pinyin { /** * 默认是gb编码,第二个参数随意设置即为utf8编 * @param type $isInitial 是否只返回首字母 * @return t ...

  9. java获取汉字拼音首字母 --转载

    在项目中要更能根据某些查询条件(比如姓名)的首字母作为条件进行查询,比如查一个叫"李晓明"的人,可以输入'lxm'.写了一个工具类如下: import java.io.Unsupp ...

随机推荐

  1. Codeforces Round #741 (Div. 2), problem: (D1) Two Hundred Twenty One (easy version), 1700

    Problem - D1 - Codeforces 题意: 给n个符号(+或-), +代表+1, -代表-1, 求最少删去几个点, 使得     题解(仅此个人理解): 1. 这题打眼一看, 肯定和奇 ...

  2. 让视障者的网络之路少一些障碍——微软为 Edge 浏览器开发自动图像描述功能并呼吁网页作者补充图片的替换说明

    网页是互联网的组成部分,浏览器是开启互联网大门的钥匙.对于生活在信息时代下的我们而言,每一个人都很难离开网络而生活,其中也包括盲人这一残障群体. 本文的引子是如下一条新闻: IT之家3月18日消息,微 ...

  3. Firefox 国外换为国内同步的服务器地址

    地址栏键入 about:config点击 接受风险并同意查找 identity把右侧字符串包含 firefox.com 替换为 firefox.com.cn 即换为国内同步服务器反之把 firefox ...

  4. 【在下版本,有何贵干?】Dockerfile中 RUN yum -y install vim失败Cannot prepare internal mirrorlist: No URLs in mirrorlist

    隐秘的版本问题---- Dockerfile中 RUN yum -y install vim失败Cannot prepare internal mirrorlist: No URLs in mirro ...

  5. 推荐系统 TOP K 评价指标

    目录 符号说明 示例数据 一.Hit Rate 二.Recall 三.NDCG 符号说明 \(top\_k\): 当前用户预测分最高的k个items,预测分由高到低排序 $pos$: 当前用户实际点击 ...

  6. Http GET 请求参数中文乱码

    两种解决方式 第1种:代码里转换 String name = request.getParamter("name"); String nameUtf8 = new String(n ...

  7. 眼见不一定为实:调用链HBase倾斜修复

    hello,大家好,我是小楼. 今天给大家分享一个关于HBase数据倾斜的排查案例,不懂调用链?不懂HBase?没关系,看完包懂~ 背景 最近HBase负责人反馈HBase存储的调用链数据偶尔出现极其 ...

  8. umi框架应用服务端SSR,实现数据预渲染

    当我们的应用使用服务端渲染的方式时,可能需要把初始化加载的数据例如推荐等不需要用户输入的内容直接渲染获取,也有利于SEO. 上一篇已经实现服务端渲染,本次实现服务端获取数据后在做渲染. 利用getIn ...

  9. java.sql和javax.sql的区别

    根据 JDBC 规范,javax.sql 包中的类和接口首先作为 JDBC 2.0 可选包提供.此可选程序包以前与 J2SE1.2 中的 java.sql 程序包是分开的.从 J2SE1.4 开始,这 ...

  10. 华为OPS,自定义命令,动态执行命令

     OPS     开放可编程系统OPS(Open Programmability System)是指设备通过提供统一的应用程序接口API(Application Programming Interfa ...