Java-汉字繁体拼音转换
import com.github.stuxuhai.jpinyin.ChineseHelper;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper; /**
* @ClassName: ChineseConvertPinyinUtil
* @Description: 汉语繁体拼音转换工具类
*/
public final class ChineseConvertPinyinUtil {
private static final String SPACEMARK = "";
private ChineseConvertPinyinUtil() {} /**
* 检查汉字是否为多音字
* @param pinYinStr 需转换的汉字
* @param deleteBlank 转换后去掉非打印字符
* @param spaceMark 非打印字符
* @return true 多音字,false 不是多音字
*/
public static boolean checkPinYin(char pinYinStr) {
boolean check = false;
try {
check = PinyinHelper.hasMultiPinyin(pinYinStr);
} catch (Exception e) {
e.printStackTrace();
}
return check;
} /**
* 转换为每个汉字对应拼音首字母字符串
* @param pinYinStr 需转换的汉字
* @param deleteBlank 转换后去掉非打印字符
* @param spaceMark 非打印字符
* @return 拼音字符串
*/
public static String convertToGetShortPinYin(String pinYinStr, boolean deleteBlank) {
String tempStr = null;
try {
tempStr = PinyinHelper.getShortPinyin(pinYinStr);
} catch (Exception e) {
tempStr = pinYinStr;
e.printStackTrace();
}
if (deleteBlank) {
tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
}
return tempStr;
} /**
* 转换为有声调的拼音字符串
* @param pinYinStr 汉字
* @param deleteBlank 转换后去掉非打印字符
* @param spaceMark 非打印字符
* @return 有声调的拼音字符串
*/
public static String convertToMarkPinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
String tempStr = pinYinStr;
try {
if (spaceMark == null) {
spaceMark = SPACEMARK;
}
tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITH_TONE_MARK); } catch (Exception e) {
tempStr = pinYinStr;
e.printStackTrace();
}
if (deleteBlank) {
tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
}
return tempStr;
} /**
* 转换为数字声调字符串
* @param pinYinStr 需转换的汉字
* @param deleteBlank 转换后去掉非打印字符
* @param spaceMark 非打印字符
* @return 转换完成的拼音字符串
*/
public static String convertToNumberPinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
String tempStr = null;
try {
if (spaceMark == null) {
spaceMark = SPACEMARK;
}
tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITH_TONE_NUMBER);
} catch (Exception e) {
tempStr = pinYinStr;
e.printStackTrace();
}
if (deleteBlank) {
tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
}
return tempStr;
} /**
* 繁体转换为简体
* @param pinYinSt
* @param deleteBlank 转换后去掉非打印字符
* @return
*/
public static String convertToSimplified(String pinYinSt, boolean deleteBlank) {
String tempStr = null;
try {
tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt);
} catch (Exception e) {
tempStr = pinYinSt;
e.printStackTrace();
}
if (deleteBlank) {
tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
}
return tempStr;
} /**
* 转换为不带音调的拼音字符串
* @param pinYinStr 需转换的汉字
* @param deleteBlank 转换后去掉非打印字符
* @param spaceMark 非打印字符
* @return 拼音字符串
*/
public static String convertToTonePinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
String tempStr = null;
try {
if (spaceMark == null) {
spaceMark = SPACEMARK;
}
tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITHOUT_TONE);
} catch (Exception e) {
tempStr = pinYinStr;
e.printStackTrace();
}
if (deleteBlank) {
tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
}
return tempStr;
} /**
* 简体转换为繁体
* @param pinYinStr
* @param deleteBlank 转换后去掉非打印字符
* @return
*/
public static String convertToTraditional(String pinYinStr, boolean deleteBlank) {
String tempStr = null;
try {
tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);
} catch (Exception e) {
tempStr = pinYinStr;
e.printStackTrace();
}
if (deleteBlank) {
tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
}
return tempStr;
} public static void main(String[] args) {
String str = "重慶 most input \r\n a b c# d";
System.out.println(convertToSimplified(str, true));
System.out.println(checkPinYin('重'));
System.out.println(convertToMarkPinYin(str, true, null));
System.out.println(convertToGetShortPinYin(str, true));
System.out.println(convertToNumberPinYin(str, true, null));
System.out.println(convertToTonePinYin(str, true, null));
System.out.println(convertToTraditional(str, true));
}
}
依赖:
<dependency>
<groupId>com.github.stuxuhai</groupId>
<artifactId>jpinyin</artifactId>
<version>1.1.8</version>
</dependency>
Java-汉字繁体拼音转换的更多相关文章
- [转]Java汉字按照拼音排序
最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator. ...
- java 汉字转拼音
先决条件: pinyin4j.jar(Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制.) 下载地址:http://pan.baidu.com/share/l ...
- java汉字转拼音以及得到首字母通用方法
package oa.common.utils; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.piny ...
- java汉字转拼音的工具类
import com.google.common.base.Strings;import net.sourceforge.pinyin4j.PinyinHelper;import net.source ...
- Java汉字转拼音
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...
- Android Java汉字转拼音总结
转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23187701 开发过程中有时候会遇到使用拼音模糊搜索等功能(典型的就是Andro ...
- JAVA汉字转拼音(取首字母大写)
import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseT ...
- 用jpinyin实现汉字转拼音功能
一.简介 项目地址:https://github.com/stuxuhai/jpinyin JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPiny ...
- 汉字转拼音开源工具包Jpinyin介绍
最近要实现一个根据词语得到词语对应拼音的功能,找到了Jpinyin这个开源工具包,使用下来发现它非常强大,完全满足我的需求,下面对它做一个简单的介绍,希望能够帮助到有需要的朋友. https://gi ...
随机推荐
- springboot使用hibernate validator校验方式
一.参数校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要 ...
- filter异常捕捉
jsp中抛出一个异常 <% String action = request.getParameter("action"); if ("accountExceptio ...
- MEF学习总结(1)---总体架构
用了很久的MEF框架来做依赖注入,最近想把它的原理和机构总结一下,主要包括如下几个方面: 1. 总体架构 2. .Net Composition Primitive 3. Attribute Mode ...
- Java堆栈解析
1.RAM和ROM区别RAM-RamdomAccessMemory随机存取存储器(断电后数据会丢失),高速存取,读写时间相等,且与地址无关,如计算机内存等. ROM-Read Only Memory只 ...
- 同步机制之--java CyclicBarrier 循环栅栏
CyclicBarrier介绍一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待 ...
- 使用exe4j把java程序生成可执行的.exe文件
exe4j可以很容易把一个jar打成exe. 下载地址:http://dl.dbank.com/c0owlopqf8 1.下载的安装文件,里面包含一个注册码生成的工具 2.安装exe4j以及破解(注 ...
- IOCP的缓冲区
IOCP的缓冲区: 应用程序的缓冲区 套接字的缓冲区 TCP的缓冲区 两个会造成WSAENOBUFS错误的原因: 锁定页面达到上限 非分页页面达到上限
- 【BZOJ】1030: [JSOI2007]文本生成器(AC自动机+dp)
题目 传送门:QWQ 传送到洛谷QWQ 分析 我一开始也不会做这题的,后来看了很多网上的题解,终于AC了.(我好菜啊) 主要参考:传送门QWQ 直接搞非常麻烦,反正我是不会做.于是考虑求反,即求有多少 ...
- Springmvc ajax请求400
转载做记录 传JSON对象 前端 function test () { var param = {username : "yitop"}; $.ajax({ timeout : 2 ...
- [z]计算机架构中Cache的原理、设计及实现
前言 虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构.指令结构.信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速 ...