`

开发自己的jar包 pinyin4j

    博客分类:
  • Java
阅读更多
今天开发了自己的第二个开源工具 jar包
名称:pinyin4j.jar
功能: 将汉语拼音转换为汉语拼音

算法:
从对应的资源文件中(文件中包含了常用汉字的unicode编码-拼音)
文件格式如下:
3007 (ling2)
4E00 (yi1)
4E01 (ding1,zheng1)
4E02 (kao3)
4E03 (qi1)
4E04 (shang4,shang3)
.
.
.
用数据流的方式读取 然后将unicode码以key,pinyin为value存入一个HashMap中

接口:
    传入:汉语拼音的字符串
    返回:拼音的字符串数组(即每个汉语拼音对应相应的拼音)


源码:
package com.anduo.pinyin4j;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;

public class PinYinHelper {
	private static HashMap<String, String> hashMap = new HashMap<String, String>();

	/**
	 * 将unicode-to-hanyu-pinyin.txt文件 以unicode为key pinyin为value 加到hashmap中
	 */
	private static void myReader() {
		InputStream is = PinYinHelper.class.getClass().getResourceAsStream(
				"/resource/unicode_to_hanyu_pinyin.txt");
		BufferedReader breader = new BufferedReader(new InputStreamReader(is));
		String s;
		String unicode;
		String pinyin;
		try {
			while ((s = breader.readLine()) != null) {
				// 提取文件流每行中的unicode码以及 pinyin字符串
				unicode = s.substring(0, 4);
				pinyin = s.substring(6, s.length() - 1);
				hashMap.put(unicode.toLowerCase(), pinyin);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 将汉语转换为汉语拼音
	 * 
	 * @param value
	 * @return pinyin[]
	 */
	public static String[] toHanYuPinYin(String value) {

		myReader();

		String[] result = new String[value.length()];
		String unicode;
		String pinyin;
		for (int i = 0; i < value.length(); i++) {
			Character c = value.charAt(i);
			unicode = Integer.toHexString(c);// 得到汉字的unicode编码
			pinyin = hashMap.get(unicode);// 从hashMap中找到汉子的拼音
			result[i] = pinyin;
		}

		return result;
	}
}



然后导出为jar包

测试一下:
新建一个java工程,然后将刚做好的jar包导入的工程中
新建一个test类
package com.anduo;

import com.anduo.pinyin4j.PinYinHelper;

public class test {
	public static void main(String[] args) {

		String s[] = PinYinHelper.toHanYuPinYin("大但是关键的是概多少了攻击多少");
		for (String string : s) {
			System.out.println(string);
		}

	}
}



测试效果:
da4,dai4
dan4
shi4
guan1
jian4
de5,di4,di2
shi4
gai4
duo1
shao3,shao4
le5,liao3,liao4
gong1
ji1
duo1
shao3,shao4


遇到的问题,在导出jar包的时候出了很多错误
主要问题出在: 如何读取jar包中的资源文件 这个可以参考我收藏的一篇文章
分享到:
评论

相关推荐

    pinyin4j工具类和jar包

    Pinyin4j的基本用法 1. 简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”...

    pinyin4j 开发jar包

    pinyin4j 开发包和例子

    pinyin4j-2.5.0.jar

    pinyin4j开发jar包

    探索PinYin4j.jar将汉字转换为拼音的基本用法

    Pinyin4j是一个功能强悍的汉语拼音工具包,是sourceforge.net上的一个开源项目。 主要的功能有: - 支持同一汉字有多个发音 - 支持拼音的格式化输出,比如第几声之类的 - 支持简体中文、繁体中文转换为拼音

    net.sourceforge.pinyin4j.zip

    该工具包用于将汉字转拼音jar文件,在开发根据汉字排序的时候很有用,还有类似通信录那样根据收个汉字拼音的首字母进行分组很有帮助。

    pinyin4j-2.5.0

    在开发过程中,我们往往会遇到将汉字转化为简码的形式,即汉字首字母大写的格式。该jar包就为汉字转首字母大写提供了方法。

    pinyin4j-2.5.0.zip

    该工具包用于将汉字转拼音jar文件,在开发根据汉字排序的时候很有用,还有类似通信录那样根据收个汉字拼音的首字母进行分组很有帮助。

    Pnyin4j-2.5.0.jar(汉语转拼音)

    强大的Pinyin4j.jar包轻松帮你实现汉字转换为拼音的功能,可以打造出类似钉钉中取昵称后两位汉字作为昵称的UI效果,满足你开发需求,如果你通过上面的英文官网,没有找到下载路径,请下载该资源,内含有源码解析文档...

    elasticsearch-5.2.2客户端JAVA开发需要的69个jar包

    elasticsearch-5.2.2客户端JAVA开发需要的69个jar包。当然也可以通过maven自动下载。activation-1.1.jar,bcpkix-jdk15on-1.55.jar,bcprov-jdk15on-1.55.jar,commons-codec-1.10.jar,commons-logging-1.2.jar,...

    JAVA开发需要的所有jar包

    如果觉得对你有帮助,可以给个关注,beanutils, c3p0, dbcp连接池,fileupload,hessian-4.0.33, hibernate, jackson, log4j, mybatis, net.sf.json, oscache, pinyin4j, poi, spring, struts,验证码,jstl-1.2.jar, ...

    Pnyin4j-2.5.0(汉语转拼音)

    强大的Pinyin4j.jar包轻松帮你实现汉字转换为拼音的功能,可以打造出类似钉钉中取昵称后两位汉字作为昵称的UI效果,满足你开发需求,如果你通过上面的英文官网,没有找到下载路径,请下载该资源,内含有源码解析文档...

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    Android-ContactFuzzySearch一个Android通讯录模糊搜索

    Android通讯录模糊搜索 ,模糊搜索通讯录联系人。 排序按照A-Z顺序进行排序。基于pinyin4j。 使用请导入对应jar包;

    java开源包8

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    Android开发之拼音转换工具类PinyinUtils示例

    1.首先下载pinyin4j-2.5.0.jar,拷贝到工程的lib目录里 官网下载地址:https://sourceforge.net/projects/pinyin4j/ 或者点击此处本站下载。 2.创建工具类:PinyinUtils /** * 拼音转换工具 * * @描述 TODO * @...

    java开源包1

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包2

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包3

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

Global site tag (gtag.js) - Google Analytics