根据汉语字符串获得对应的拼音字符串或者拼音首字母字符串等操作
2015-07-12 14:55
399 查看
Java 根据汉语字符串获得对应的拼音字符串或者拼音首字母字符串等操作,需要添加jar包:
pinyin4j-2.5.0
下载地址:http://download.csdn.net/download/yangwang213/10031201
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;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Map;
/**
* 拼音工具
*
* @author xx
*/
public class PinyinToolkit {
/**
* 获取汉字串拼音首字母,英文字符不变
*
* @param chinese 汉字串
* @return 汉语拼音首字母
*/
public static String cn2FirstSpell(String chinese) {
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if (_t != null) {
pybf.append(_t[0].charAt(0));
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
return "";
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString().replaceAll("\\W", "").trim();
}
/**
* 获取汉字串拼音,英文字符不变
*
* @param chinese 汉字串
* @return 汉语拼音
*/
public static String cn2Spell(String chinese) {
if(chinese==null || chinese.equals("")){
return "";
}else{
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] str=PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if(str==null || str.length==0){
break;
}
pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
} catch (BadHanyuPinyinOutputFormatCombination e) {
break;
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString();
}
}
/**
* 测试程序
*/
public static void main(String[] args) {
String cnStr = "中华人民共和国";
System.out.println("汉字串首字母:"+cn2Spell(cnStr));
System.out.println("汉字串拼音:"+cn2FirstSpell(cnStr));
}
}
pinyin4j-2.5.0
下载地址:http://download.csdn.net/download/yangwang213/10031201
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;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Map;
/**
* 拼音工具
*
* @author xx
*/
public class PinyinToolkit {
/**
* 获取汉字串拼音首字母,英文字符不变
*
* @param chinese 汉字串
* @return 汉语拼音首字母
*/
public static String cn2FirstSpell(String chinese) {
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if (_t != null) {
pybf.append(_t[0].charAt(0));
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
return "";
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString().replaceAll("\\W", "").trim();
}
/**
* 获取汉字串拼音,英文字符不变
*
* @param chinese 汉字串
* @return 汉语拼音
*/
public static String cn2Spell(String chinese) {
if(chinese==null || chinese.equals("")){
return "";
}else{
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] str=PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if(str==null || str.length==0){
break;
}
pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
} catch (BadHanyuPinyinOutputFormatCombination e) {
break;
}
} else {
pybf.append(arr[i]);
}
}
return pybf.toString();
}
}
/**
* 测试程序
*/
public static void main(String[] args) {
String cnStr = "中华人民共和国";
System.out.println("汉字串首字母:"+cn2Spell(cnStr));
System.out.println("汉字串拼音:"+cn2FirstSpell(cnStr));
}
}
相关文章推荐
- 深度学习之一:概述
- 1001 Exponentiation
- Delphi的in循环
- 【LeetCode 234】Palindrome Linked List
- 光源
- 使用service方式启动rabbitmq-server报错erlexec: HOME must be set
- Windows Azure系列-- 配置Azure Power Shell
- Count Primes -- leetcode
- 各种语言的模块导入导出形式
- 设计模式-创建型模式#单例模式Singleton
- 在MyEclipse安装目录看不完整的目录
- 冒泡排序
- grep使用正则表达式查看与特定主机是否建立链接
- 备份mysq binlog shell
- dojo.hasClass/dojo.addClass/dojo.removeClass/dojo.toggleClass/dojo.repalceClass
- LinkedList 方法知识点
- Android App Crash类型
- 德莱联盟(判断两个线段是否相交)
- poj3259 bellman判正环
- 【Android】SDK工具学习 - adb