`
v5qqbrowser
  • 浏览: 356126 次
文章分类
社区版块
存档分类
最新评论

获取汉字的拼音码(工具类)

 
阅读更多

项目正好用到要获取汉字的拼音码,从网上搜索到的一个工具类。


package com.util;

import java.io.UnsupportedEncodingException;

public class PinyinUtil {

	static final int GB_SP_DIFF = 160;
	// 存放国标一级汉字不同读音的起始区位码
	static final int[] secPosValueList = { 1601, 1637, 1833, 2078, 2274, 2302,
			2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027,
			4086, 4390, 4558, 4684, 4925, 5249, 5600 };
	// 存放国标一级汉字不同读音的起始区位码对应读音
	static final char[] 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 oriStr
	 * @return
	 */
	public static String getFirstLetter(String oriStr) {
		String str = oriStr.toLowerCase();
		StringBuffer buffer = new StringBuffer();
		char ch;
		char[] temp;
		for (int i = 0; i < str.length(); i++) { // 依次处理str中每个字符
			ch = str.charAt(i);
			temp = new char[] { ch };
			byte[] uniCode = new String(temp).getBytes();
			if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字
				buffer.append(temp);
			} else {
				buffer.append(convert(uniCode));
			}
		}
		return buffer.toString();
	}

	/**
	 * 获取一个汉字的拼音码
	 * @param ch
	 * @return
	 */
	public static Character getFirstLetter(char ch) {
		// 过滤英文字母
		if((ch >= 'a' && ch <= 'z')) {
			return ch;
		} else if (ch >= 'A' && ch <= 'Z') {
			return (char) (ch + 32);
		}
		
		byte[] uniCode = null;
		try {
			uniCode = String.valueOf(ch).getBytes("GBK");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			return null;
		}
		if (uniCode[0] < 128 && uniCode[0] > 0) { // 非汉字
			return '#';
		} else {
			return convert(uniCode);
		}
	}

	/**
	 * 获取一个汉字的拼音首字母。 GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码
	 * 例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43
	 * 0x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’
	 */
	static char convert(byte[] bytes) {
		char result = '-';
		int secPosValue = 0;
		int i;
		for (i = 0; i < bytes.length; i++) {
			bytes[i] -= GB_SP_DIFF;
		}
		secPosValue = bytes[0] * 100 + bytes[1];
		for (i = 0; i < 23; i++) {
			if (secPosValue >= secPosValueList[i]
					&& secPosValue < secPosValueList[i + 1]) {
				result = firstLetter[i];
				break;
			}
		}
		return result;
	}

}


注:由于作者不是是谁,所以此文没注名出处!



分享到:
评论

相关推荐

    获取汉字拼音码首字母的工具类

    获取汉字拼音码首字母的工具类

    java中根据汉字字符串获取拼音首字母工具类

    java中根据汉字字符串获取拼音首字母工具类

    安卓获取汉字拼音首字母工具类封装

    可以直接调用方法,有需要配合IndexBar-master这个通讯录开源控件使用的可以自己去下载IndexBar这个控件

    Android获取字符串拼音工具类

    ccs2Pinyin : 汉字转拼音 ccs2Pinyin : 汉字转拼音 getPinyinFirstLetter : 获取第一个汉字首字母 getPinyinFirstLetters: 获取所有汉字的首字母 getSurnamePinyin : 根据名字获取姓氏的拼音 getSurnameFirstLetter:...

    汉字转拼音常用的工具类

    包括最新的pinyin4j最新的2.5.0版,还有android的HanziToPinyin类,以及获取汉字全拼首拼的工具类

    jaava和jsp工具类

    [工具类] 获得汉字拼音首字母的java工具类 .java [工具类] 获取绝对路径 .java [工具类] 记录log日志文件的工具类 .java [工具类] 连接数据库的工具类 .java [工具类] 使用Java程序来实现HTTP文件的队列下载 ....

    30个java工具类

    [工具类] 获得汉字拼音首字母的java工具类.java.txt [工具类] 获取绝对路径 .java.txt [工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的...

    【强2】30个java工具类

    [工具类] 获得汉字拼音首字母的java工具类.java.txt [工具类] 获取绝对路径 .java.txt [工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的...

    PingYinUtil 拼音工具类java

    PingYinUtil 拼音工具类java 将字符串中的中文转化为拼音,其他字符不变 获取汉字串拼音首字母,英文字符不变 获取汉字串拼音,英文字符不变

    我积攒的java工具类 基本满足开发需要的工具类

    D:\002 我的工具类\006 汉字转换成拼音\SpellUtils.java D:\002 我的工具类\007 字符串 D:\002 我的工具类\007 字符串\StringUtils.java D:\002 我的工具类\008 校验 D:\002 我的工具类\008 校验\一起使用 D:\002 我...

    java获取中文拼音首字母工具类定义与用法实例

    主要介绍了java获取中文拼音首字母工具类定义与用法,结合实例形式分析了java获取中文拼音首字母工具类的具体定义、使用方法及相关操作注意事项,需要的朋友可以参考下

    C# 源码 汉字转换为拼音

    C# 源码 汉字转换为拼音 汉字转换成拼音(全拼)

    js提取中文拼音首字母的封装工具类

    本文主要记录了如何用js提前中文拼音首字母的方法。封装一个函数,假如有需要的,可以直接拿去用。下面话不多说了,来一起看看详细的介绍吧。 原理 主要是根据中文的unicode码来进行的。主要是在收集的中文范围内...

    JAVA工具类

    PinyinUtils - 汉字转拼音 media MediaUtils - 基于ffmpeg,qtfaststart,yamdi的多媒体工具类 net AttachmentUtils - HTTP文件下载防止中文乱码 FastDFSUtils - 操作FastDFS的工具类 FtpUtils - 操作FTP的工具...

    pinYin4J工具类

    获取汉字的拼音首字母工具类,对其进行封装满足项目开发使用.

    自己收集整理的一些常用的工具类

    AnimationUtils 动画工具类 AppUtils APP相关信息工具类 AssetDatabaseOpenHelper 目录资源获取 Base64 加密 BitmapUtil 获取Bitmap和对Bitmap的操作 ChannelUtil 获取市场号 Colors 颜色工具类 包括常用的色值 DES ...

    android 汉字转拼音应用

    android 汉字转拼音应用 源代码,没有使用任何第三方jar,本应用可以打包成jar供开发使用。很强大。

    懒惰:Android工具自己整理的常用的工具类

    #这个是我自己收集整理的一些常用的工具类##有好的工具类,欢迎提交PR 作者微博: ##增加常用库的README_LIB 内容说明 工具 描述 动画工具类 APP相关信息工具类 目录资源获取 加密 获取Bitmap和对Bitmap的操作 ...

    web 项目中的各种工具类

    web 项目中的各种工具类 Bean2MapUtil 实体bean的数据转到map中 BeanUtil 拷贝一个bean中的非空属性于另一个bean中 CopyOfJExcelUtils excel 工具类 DateUtil 时间工具类 FileUtils 文件工具类 JExcelUtils excel ...

    分享一段PHP制作的中文拼音首字母工具类

    * 汉字拼音首字母工具类 * 注: 英文的字串:不变返回(包括数字) eg .abc123 =&gt; abc123 * 中文字符串:返回拼音首字符 eg. 测试字符串 =&gt; CSZFC * 中英混合串: 返回拼音首字符和英文 eg. 我i我j =&gt; WIWJ * eg...

Global site tag (gtag.js) - Google Analytics