• Pinyin4j实战


    package com.haiyisoft.innovationcenter.pinyin;
    
    import org.junit.Test;
    
    import net.sourceforge.pinyin4j.PinyinHelper;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
    
    public class Pinyin4jTest {
    
    	//pinyin4j格式类
    	private HanyuPinyinOutputFormat format = null;
    	//拼音字符串数组
    	private String[] pinyin;
    	//通过构造方法进行初始化
    	public Pinyin4jTest() {
    		format = new HanyuPinyinOutputFormat();
    		//设置转换拼音格式
    		/**
    		 * TITHOUT_TONE:不带声调,例如:差:cha,cha,chai,ci
    		 * WITH_TONE_MARK:不带声调(测试出现异常)
    		 * WITH_U_UNICODE:带声调,使用数字表示声调,例如:差:cha1,cha4,chai1,ci1
    		 */
    		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    		pinyin = null;
    	}
    	
    	//对单个字进行转换
    	public String getCharPinyin(char py) {
    		try {
    			pinyin = PinyinHelper.toHanyuPinyinStringArray(py, format);
    		} catch (BadHanyuPinyinOutputFormatCombination e) {
    			e.printStackTrace();
    		}
    		//当转换的字符串不是汉字的时候就返回null
    		if(pinyin==null) {
    			return null;
    		}
    		//优化,把多音字放到同义词词典中
    		if(pinyin.length>1) {
    			for(String s : pinyin) {
    				//System.out.println(s);
    			}
    		}
    		//多音字会返回一个多音字拼音的数组,pinyin4j并不能有效判断该字的合适拼音
    		return pinyin[0];
    	}
    	//对字符串就行转换
    	public String getStringPinyin(String py) {
    		StringBuilder sb = new StringBuilder();
    		String temp = null;
    		//循环字符串
    		for(int i=0;i<py.length();i++) {
    			temp = this.getCharPinyin(py.charAt(i));
    			if(temp!=null) {
    				sb.append(temp);
    			}else {
    				sb.append(py.charAt(i));
    			}
    		}
    		return sb.toString();
    	}
    	@Test
    	public void test() {
    		char cha = '差';
    		String str = "出差去广州,go go !";
    		String chaPy = getCharPinyin(cha);
    		System.out.println(cha+"
    翻译成拼音为:"+chaPy);
    		String strPy = getStringPinyin(str);
    		System.out.println(str+"
    翻译成拼音为:"+strPy);
    	}
    
    }
    

      结果:

      分析:

        在多音字方面确实存在不少问题,会导致在一些使用情况下出现异常!

  • 相关阅读:
    第5课.异步通知
    第4课.poll机制
    第3课.Linux异常处理体系结构
    第2课.字符设备驱动程序的开发
    第1课.Linux驱动的概述
    [Linux驱动]字符设备驱动学习笔记(二)———实例
    [linux驱动]linux块设备学习笔记(三)——程序设计
    [Linux驱动]字符设备驱动学习笔记(一)
    [linux驱动]proc学习笔记(一)
    [linux驱动][Linux内存]DMA学习笔记一
  • 原文地址:https://www.cnblogs.com/yszd/p/9492239.html
Copyright © 2020-2023  润新知