pinyin4j工具类
- <!-- 导入pinyin4j -->
- <dependency>
- <groupId>com.belerweb</groupId>
- <artifactId>pinyin4j</artifactId>
- <version>2.5.0</version>
- </dependency>
- PinYin4jUtils 工具类
- 1 package cn.itcast.bos.utils;
- import java.util.Arrays;
- import net.sourceforge.pinyin4j.PinyinHelper;
- import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
- import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
- import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
- import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
- public class PinYin4jUtils {
- /**
- * 将字符串转换成拼音数组
- *
- * @param src
- * @return
- */
- public static String[] stringToPinyin(String src) {
- return stringToPinyin(src, false, null);
- }
- /**
- * 将字符串转换成拼音数组
- *
- * @param src
- * @return
- */
- public static String[] stringToPinyin(String src, String separator) {
- return stringToPinyin(src, true, separator);
- }
- /**
- * 将字符串转换成拼音数组
- *
- * @param src
- * @param isPolyphone
- * 是否查出多音字的所有拼音
- * @param separator
- * 多音字拼音之间的分隔符
- * @return
- */
- public static String[] stringToPinyin(String src, boolean isPolyphone,
- String separator) {
- // 判断字符串是否为空
- if ("".equals(src) || null == src) {
- return null;
- }
- char[] srcChar = src.toCharArray();
- int srcCount = srcChar.length;
- String[] srcStr = new String[srcCount];
- for (int i = 0; i < srcCount; i++) {
- srcStr[i] = charToPinyin(srcChar[i], isPolyphone, separator);
- }
- return srcStr;
- }
- /**
- * 将单个字符转换成拼音
- *
- * @param src
- * @return
- */
- public static String charToPinyin(char src, boolean isPolyphone,
- String separator) {
- // 创建汉语拼音处理类
- HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
- // 输出设置,大小写,音标方式
- defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
- defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
- StringBuffer tempPinying = new StringBuffer();
- // 如果是中文
- if (src > 128) {
- try {
- // 转换得出结果
- String[] strs = PinyinHelper.toHanyuPinyinStringArray(src,
- defaultFormat);
- // 是否查出多音字,默认是查出多音字的第一个字符
- if (isPolyphone && null != separator) {
- for (int i = 0; i < strs.length; i++) {
- tempPinying.append(strs[i]);
- if (strs.length != (i + 1)) {
- // 多音字之间用特殊符号间隔起来
- tempPinying.append(separator);
- }
- }
- } else {
- tempPinying.append(strs[0]);
- }
- } catch (BadHanyuPinyinOutputFormatCombination e) {
- e.printStackTrace();
- }
- } else {
- tempPinying.append(src);
- }
- return tempPinying.toString();
- }
- public static String hanziToPinyin(String hanzi) {
- return hanziToPinyin(hanzi, " ");
- }
- /**
- * 将汉字转换成拼音
- *
- * @param hanzi
- * @param separator
- * @return
- */
- public static String hanziToPinyin(String hanzi, String separator) {
- // 创建汉语拼音处理类
- HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
- // 输出设置,大小写,音标方式
- defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
- defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
- String pinyingStr = "";
- try {
- pinyingStr = PinyinHelper.toHanyuPinyinString(hanzi, defaultFormat,
- separator);
- } catch (BadHanyuPinyinOutputFormatCombination e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return pinyingStr;
- }
- /**
- * 将字符串数组转换成字符串
- *
- * @param str
- * @param separator
- * 各个字符串之间的分隔符
- * @return
- */
- public static String stringArrayToString(String[] str, String separator) {
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < str.length; i++) {
- sb.append(str[i]);
- if (str.length != (i + 1)) {
- sb.append(separator);
- }
- }
- return sb.toString();
- }
- /**
- * 简单的将各个字符数组之间连接起来
- *
- * @param str
- * @return
- */
- public static String stringArrayToString(String[] str) {
- return stringArrayToString(str, "");
- }
- /**
- * 将字符数组转换成字符串
- *
- * @param str
- * @param separator
- * 各个字符串之间的分隔符
- * @return
- */
- public static String charArrayToString(char[] ch, String separator) {
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < ch.length; i++) {
- sb.append(ch[i]);
- if (ch.length != (i + 1)) {
- sb.append(separator);
- }
- }
- return sb.toString();
- }
- /**
- * 将字符数组转换成字符串
- *
- * @param str
- * @return
- */
- public static String charArrayToString(char[] ch) {
- return charArrayToString(ch, " ");
- }
- /**
- * 取汉字的首字母
- *
- * @param src
- * @param isCapital
- * 是否是大写
- * @return
- */
- public static char[] getHeadByChar(char src, boolean isCapital) {
- // 如果不是汉字直接返回
- if (src <= 128) {
- return new char[] { src };
- }
- // 获取所有的拼音
- String[] pinyingStr = PinyinHelper.toHanyuPinyinStringArray(src);
- // 创建返回对象
- int polyphoneSize = pinyingStr.length;
- char[] headChars = new char[polyphoneSize];
- int i = 0;
- // 截取首字符
- for (String s : pinyingStr) {
- char headChar = s.charAt(0);
- // 首字母是否大写,默认是小写
- if (isCapital) {
- headChars[i] = Character.toUpperCase(headChar);
- } else {
- headChars[i] = headChar;
- }
- i++;
- }
- return headChars;
- }
- /**
- * 取汉字的首字母(默认是大写)
- *
- * @param src
- * @return
- */
- public static char[] getHeadByChar(char src) {
- return getHeadByChar(src, true);
- }
- /**
- * 查找字符串首字母
- *
- * @param src
- * @return
- */
- public static String[] getHeadByString(String src) {
- return getHeadByString(src, true);
- }
- /**
- * 查找字符串首字母
- *
- * @param src
- * @param isCapital
- * 是否大写
- * @return
- */
- public static String[] getHeadByString(String src, boolean isCapital) {
- return getHeadByString(src, isCapital, null);
- }
- /**
- * 查找字符串首字母
- *
- * @param src
- * @param isCapital
- * 是否大写
- * @param separator
- * 分隔符
- * @return
- */
- public static String[] getHeadByString(String src, boolean isCapital,
- String separator) {
- char[] chars = src.toCharArray();
- String[] headString = new String[chars.length];
- int i = 0;
- for (char ch : chars) {
- char[] chs = getHeadByChar(ch, isCapital);
- StringBuffer sb = new StringBuffer();
- if (null != separator) {
- int j = 1;
- for (char ch1 : chs) {
- sb.append(ch1);
- if (j != chs.length) {
- sb.append(separator);
- }
- j++;
- }
- } else {
- sb.append(chs[0]);
- }
- headString[i] = sb.toString();
- i++;
- }
- return headString;
- }
- public static void main(String[] args) {
- // pin4j 简码 和 城市编码
- String s1 = "中华人民共和国";
- String[] headArray = getHeadByString(s1); // 获得每个汉字拼音首字母
- System.out.println(Arrays.toString(headArray));
- String s2 = "长城";
- System.out.println(Arrays.toString(stringToPinyin(s2, true, ",")));
- }
- }
pinyin4j工具类的更多相关文章
- java中常用的工具类(二)
下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- Java汉字转成汉语拼音工具类
Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...
- java PinYinUtils 拼音工具类
package com.sicdt.library.core.utils; import java.util.HashSet; import java.util.Set; import net.sou ...
- java:工具(汉语转拼音,压缩包,EXCEL,JFrame窗口和文件选择器,SFTP上传下载,FTP工具类,SSH)
1.汉语转拼音: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuP ...
- java常用工具类(二)
1.FtpUtil package com.itjh.javaUtil; import java.io.File; import java.io.FileOutputStream; import ja ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Android—关于自定义对话框的工具类
开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...
- [转]Java常用工具类集合
转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...
- js常用工具类.
一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...
随机推荐
- zabbix 监控ipmi
一,配置ipmi yum -y install OpenIPMI OpenIPMI-devel ipmitool freeipmi 登入IDARAC 在服务端测试是否可以获得数据 ipmitool - ...
- 抽象工厂方法模式(Abstract Factory Pattern)
Provide an interface for creating families of related or dependent objects without specifying their ...
- 绘图神器-matplotlib入门
这次,让我们使用一个非常有名且十分有趣的玩意儿来完成今天的任务,它就是jupyter. 一.安装jupyter matplotlib入门之前,先安装好jupyter.这里只提供最为方便快捷的安装方式: ...
- 用jquery来实现正反选选择框checkbox的小示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- WebAssembly简单指导---译
开发者指导 本页面提供一步一步的操作将一个简单的程序编译成webassembly 前提要求 为了编译成webAssembly,需要提前安装一些工具: Git.在Linux和OSX下已自带了Git,在W ...
- 针对在webview模式中,小米魅族手机不支持html5原生video的control的解决办法![原创]
其实,解决办法就是,重新写个control控制功能,.同样用流行的video.js可以实现 第一步就是增加个播放的图片..要不然没有按钮多难看! <div class="videoDi ...
- Sql Server 锁 排它锁 更新锁 共享锁
引用别人的.有时间整体整理下. 引用地址:http://www.cnblogs.com/wenjl520/archive/2012/08/24/2654412.html 锁的概述 一. 为什么要引入锁 ...
- Java基础之 学java从宝宝的命令行做起
JAVA学习笔记 JAVA命令行 在当前文件的命令行下 编译:输入命令javac GetGreeting.java 执行 命令 Java GetGreeting 有package包的程序 1.到文件当 ...
- 面试基础(二)-mem函数
常考的函数有下面三个,memset,memcpy,memmove,一定要记住三个函数的函数原型,熟记返回值类型和参数类型,当然也不能忘记参数检查 memset #include<iostre ...
- 【JS 综合】JS综合
视频教程链接:http://www.xuexi111.com/s/javascript/ 张孝祥:http://www.21edu8.com/pcnet/programming/26685/