`
276833190
  • 浏览: 14004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

中文转 拼音字母、全拼 工具类

阅读更多

什么都不用说了  直接贴代码:

 

package test;

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;

/**
 * 中文转字母、拼音工具类<br><br>
 * 注意:依赖的jar包:pinyin4j-2.5.0.jar
 * 
 * @author wp Dec 9, 2015 6:40:59 PM
 *
 */
public class PinYinAPI {
	
	public static void main(String[] args) {
		String ss = PinYinAPI.getPinYinFull("吕氏春秋,我有一颗真挚的心,不要问我为什么?使用PinYin4j很好啊!");
		System.out.println(ss);
		String bb = PinYinAPI.getPinYinFirstChar("吕,我有一颗真挚的心,不要问我为什么?使用PinYin4j很好啊!");
		System.out.println(bb);
	}
	
	/**
	 * 得到中文的全拼
	 * @param str
	 * @return
	 */
	public static String getPinYinFull(String str){
		return getPinYin(str, true, ToneType.no_tone, true, false);
	}
	
	/**
	 * 得到中文的首字母(大写)
	 * @param str
	 * @return
	 */
	public static String getPinYinFirstChar(String str){
		return getPinYin(str, false, ToneType.no_tone, false, true);
	}
	
	/**
	 * 声调类型(no_tone:无声调、num_tone:数字声调、mark_tone:标记声调-中文)
	 *
	 */
	public static enum ToneType{
		no_tone, num_tone, mark_tone
	}
	private static HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
	
	/**
    * 提取每个汉字的全拼或者首字母
    * 
     * @param str 要转换的字符串
     * @param isFull 是否转全拼
     * @param tone 声调类型
     * @param isLow 是否转小写
     * @param isTrim 是否去除中间的空格
     * @return
     */
    public static String getPinYin(String str, boolean isFull, ToneType tone, boolean isLow, boolean isTrim) {
        if (isNull(str)) {
            return "";
        }
        if(isLow){
        	//转换大小写 (LOWERCASE:小写:默认格式、UPPERCASE:大写)
        	format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        }else{
        	format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        }
        if(ToneType.mark_tone.equals(tone)){
        	// WITH_TONE_NUMBER(以数字代替声调:默认格式)、WITHOUT_TONE (无声调)、WITH_TONE_MARK (有声调,编码必须使用WITH_U_UNICODE)
        	format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
        	// 以“吕”为例:WITH_U_AND_COLON(lu:3:默认格式)、WITH_U_UNICODE(lü3)、WITH_V(lv3)
        	format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
        } else if(ToneType.num_tone.equals(tone)){
        	format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
        	format.setVCharType(HanyuPinyinVCharType.WITH_V);
        } else{
        	format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        	format.setVCharType(HanyuPinyinVCharType.WITH_V);
        }
        
        StringBuilder sb = new StringBuilder();
        
        boolean flag = false;
        for (int i = 0; i < str.length(); i++) {
            char word = str.charAt(i);
            // 提取汉字的首字母、拼音
			try {
				String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(word, format);
//				pinyinArray = PinyinHelper.toTongyongPinyinStringArray(word);
//				pinyinArray = PinyinHelper.toYalePinyinStringArray(word);
//				pinyinArray = PinyinHelper.toWadeGilesPinyinStringArray(word);
			
//	            System.out.println(Arrays.toString(pinyinArray));
				
	            if (pinyin != null) {
	            	if(isFull){
	            		if(flag){
	            			sb.append(" "+pinyin[0]);
	            		}else{
	            			sb.append(pinyin[0]);
	            			flag = true;
	            		}
	            	}else{
	            		sb.append(pinyin[0].charAt(0));
	            	}
	            }else {
	                sb.append(word);
	                flag = false;
	            }
			} catch (Exception e) {
				e.printStackTrace();
				sb.append(word);
			}
        }
        return sb.toString();
    }

   /**
    * 判断字符串是否为空
    */

    private static boolean isNull(Object strData) {
        if (strData == null || String.valueOf(strData).trim().equals("")) {
            return true;
        }
        return false;
    }

	

}

 

分享到:
评论

相关推荐

    汉字转换拼音、拼音首字母

    汉字转换拼音、拼音首字母工具类!很好,很实用,可以把中文转换成汉语拼音全拼或者拼音首字母!

    Java汉字转换为拼音工具类

    Java汉字转换为拼音工具类 汉字转换为拼音包括全拼、首字母缩写;全拼可计算出多音字。

    实用汉字转拼音 V4.6

    实用的汉字转拼音专用工具。本软件采用了标准汉字拼音库文件,可实现简体汉字转换为标准全拼拼音,操作简单。转换时可以选择拼音为大写、小写或是首字母大写,以及是否忽略标点符号等。

    汉字转拼音的工具类

    汉字转拼音的工具类,支持重音字 String str = "重长参乐"; //首字母 System.out.println(Ch2Spell.converterToFirstSpell(str)); //全拼 System.out.println(Ch2Spell.converterToSpell(str));

    以上的汉字转化为全拼或拼音的第一个字符

    java工具类_99%以上的汉字转化为全拼/拼音的第一个字符

    根据中文生成对应的全拼、简拼

    1.功能:对河北省五级行政区划元数据拼接后生成全拼、简拼 2.代码结构: ChineseToPinyin是中文转全拼、简拼工具类 SqlHelper是数据库连接操作工具类 Main是主函数

    将汉字转化成拼音

    将汉字转化成拼音的工具类,包括全拼和首字母拼音等。内含一个Java工具类和一个TXT文本

    Pinyin4jUtil.java

    汉子转换成拼音工具类,包括把汉字转换成首字母大写的全拼字母,把汉字转换成小写的简拼,支持多音字符的转换以及是否带声调

    一步到位工具条OneStepBar v2.2.9.zip

    一步到位工具条OneStepBar是一款小巧的桌面工具   一步到位工具条OneStepBar功能: ...1. 添加网址收集的查找功能:能够根据标题、全拼、拼音首字母、网址关键字、备注关键字等进行快速查找 2. 迁移到VS2010平台

    五笔输入法培训教程.pptx

    输入方法 在小写英文状态,输入一个汉字的拼音字母,根据提示行重码汉字的序号,按该字序号对应的数字键即可输入该汉字。提示行以外的重码字,通过翻页查找。 例:广、挤 如果输入的是词,就应将词语的拼音全部输入...

    JAVA版通讯录管理系统课程设计【系统设计文档】【系统需求分析文档】【系统实验报告】【答辩展示PPT】

    (2)模糊查询:可以按姓名、电话号码、手机、姓名的汉语拼音的声母或全拼查询。支持模糊查询即输入部分数据后,可以查询出符合条件的全部条目。如:输入“张”,列出所有名字中有“张”的条目;输入“2645”列出...

    java版通讯录管理系统

    个汉语拼音的字母分类。 5 .删除和修改功能:查询到一个条目后,可以删除该条目或修改条目内容。 6 .通信录内容的导入和导出功能。要求能够以CSV 格式和 vCard 格式导入 和导出通讯录的全部内容。并能够与主流...

    JAVA版通讯录管理系统课程设计源码

    (2)模糊查询:可以按姓名、姓名的汉语拼音的声母或全拼查询。支持模糊查询,即输入部分数据后,可以查询出符合条件的全部条目。如:输入“张”,列出所有名字中有“张”的条目;输入“xl”,列出声母为该2个字母的...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名) 12.app接口(支持与其它语言数据交互) 12.极光推送 (推送给APP及时消息,APP不启动也能收到) 14.微信接口(身份...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 oracle版本_spring3.0

    根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名) 12.app接口(支持与其它语言数据交互) 12.极光推送 (推送给APP及时消息,APP不启动也能收到) 14.微信接口(身份...

    会计理论考试题

    C、选择全拼输入法来输入汉字 D、在控制面板中选“输入法”,选择CBK汉字输入法 27.要想在文章中输入希腊字母“π”,应___B___。 A、用英文字母“PI”代替B、右击“输入法状态”窗口中的软键盘按钮,然后选择希腊...

Global site tag (gtag.js) - Google Analytics