中文字转拼音工具
2011-04-24 10:15
225 查看
1、引入pinyin4j.jar包(可以从http://pinyin4j.sourceforge.net 网站上下载)
如果是MAVEN工具可以加入依赖
<dependency>
<groupId>pinyin4j.sourceforge.net</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
注:具体使用方法请查看http://pinyin4j.sourceforge.net内的相关文档
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.log4j.Logger;
/**
*
* File Name : PinyinUtil.java
*
* @Description : 中文拼音工具类
*/
public class PinyinUtil
{
private static Logger logger = Logger.getLogger(PinyinUtil.class.getName());
/**
* Description : 根据汉字获得此汉字的拼音
*
* @param hanzhis
* @return
*
*/
public static String getPinYin(String hanzhis)
{
return getPinYin(hanzhis, false);
}
/**
* Description : 根据汉字获得此汉字的拼音首字母
*
* @param hanzhis
* @return
*
*/
public static String getPinYinHeadChar(String hanzhis)
{
return getPinYin(hanzhis, true);
}
private static String getPinYin(String hanzhis, boolean isHeadChar)
{
int len = hanzhis.length();
char[] hanzhi = hanzhis.toCharArray();
// 设置输出格式
HanyuPinyinOutputFormat formatParam = new HanyuPinyinOutputFormat();
formatParam.setCaseType(HanyuPinyinCaseType.UPPERCASE);
formatParam.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
formatParam.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuilder py = new StringBuilder();
Pattern pattern = Pattern.compile("^[/u4e00-/u9fa5]{0,128}$");
for (int i = 0; i < len; i++)
{
char c = hanzhi[i];
Matcher matcher = pattern.matcher(String.valueOf(c));
// 检查是否是汉字,如果不是汉字就不转换
if (!matcher.matches())
{
py.append(c);
continue;
}
// 对汉字进行转换成拼音
try
{
String[] t2 = PinyinHelper.toHanyuPinyinStringArray(c,
formatParam);
if (isHeadChar)
{
py.append(t2[0].charAt(0));
} else
{
py.append(t2[0]);
}
} catch (BadHanyuPinyinOutputFormatCombination e)
{
logger.error(c + " to pinyin error!", e);
py.append(c);
}
}
return py.toString();
}
public static void main(String[] args)
{
String test = "汉字转拼音";
System.err.println(PinyinUtil.getPinYin(test));
System.err.println(PinyinUtil.getPinYinHeadChar(test));
}
}
如果是MAVEN工具可以加入依赖
<dependency>
<groupId>pinyin4j.sourceforge.net</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
注:具体使用方法请查看http://pinyin4j.sourceforge.net内的相关文档
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.log4j.Logger;
/**
*
* File Name : PinyinUtil.java
*
* @Description : 中文拼音工具类
*/
public class PinyinUtil
{
private static Logger logger = Logger.getLogger(PinyinUtil.class.getName());
/**
* Description : 根据汉字获得此汉字的拼音
*
* @param hanzhis
* @return
*
*/
public static String getPinYin(String hanzhis)
{
return getPinYin(hanzhis, false);
}
/**
* Description : 根据汉字获得此汉字的拼音首字母
*
* @param hanzhis
* @return
*
*/
public static String getPinYinHeadChar(String hanzhis)
{
return getPinYin(hanzhis, true);
}
private static String getPinYin(String hanzhis, boolean isHeadChar)
{
int len = hanzhis.length();
char[] hanzhi = hanzhis.toCharArray();
// 设置输出格式
HanyuPinyinOutputFormat formatParam = new HanyuPinyinOutputFormat();
formatParam.setCaseType(HanyuPinyinCaseType.UPPERCASE);
formatParam.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
formatParam.setVCharType(HanyuPinyinVCharType.WITH_V);
StringBuilder py = new StringBuilder();
Pattern pattern = Pattern.compile("^[/u4e00-/u9fa5]{0,128}$");
for (int i = 0; i < len; i++)
{
char c = hanzhi[i];
Matcher matcher = pattern.matcher(String.valueOf(c));
// 检查是否是汉字,如果不是汉字就不转换
if (!matcher.matches())
{
py.append(c);
continue;
}
// 对汉字进行转换成拼音
try
{
String[] t2 = PinyinHelper.toHanyuPinyinStringArray(c,
formatParam);
if (isHeadChar)
{
py.append(t2[0].charAt(0));
} else
{
py.append(t2[0]);
}
} catch (BadHanyuPinyinOutputFormatCombination e)
{
logger.error(c + " to pinyin error!", e);
py.append(c);
}
}
return py.toString();
}
public static void main(String[] args)
{
String test = "汉字转拼音";
System.err.println(PinyinUtil.getPinYin(test));
System.err.println(PinyinUtil.getPinYinHeadChar(test));
}
}
相关文章推荐
- django-uuslug: 方便的将中文转化成拼音 slug 的工具
- 中文变拼音的java工具
- 【码云周刊第 33 期】6款程序员必备的开源中文处理工具
- 抓包工具 Charles Response 中文乱码解决方法
- 6款程序员必备的开源中文处理工具
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
- 将中文汉字转换成拼音(全拼)
- Ubuntu FTP工具 FileZilla的安装以及配置正常显示中文目录
- 取中文拼音首字母,提供了多音字的选择 js javascript c# java(转)
- sql如何让中文名字按 名字第一个字的拼音首字母排序
- sql中文字符串获取拼音首字母
- 将中文转成拼音SQL版[转]
- 云计算仿真工具中文注释Datacenter.java
- LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档
- 中文拼音排序
- 云计算仿真工具中文注释VmAllocationPolicySimple.java
- LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档
- JAVA获取中文汉字的拼音首字母
- c# 根据中文汉字获取到拼音
- ER-STUDIO 6.5工具使用帮助的中文翻译