zoukankan      html  css  js  c++  java
  • Java 中文转换拼音工具

    Java 中文转换拼音工具

    /**
     * <html>
     * <body>
     *  <P> Copyright 1994 JsonInternational</p>
     *  <p> All rights reserved.</p>
     *  <p> Created on 19941115</p>
     *  <p> Created by Jason</p>
     *  </body>
     * </html>
     */
    package cn.ucaner.alpaca.framework.utils.chinese;
    
    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;
    
    /**
    * @Package:cn.ucaner.framework.utils   
    * @ClassName:PinyinUtils   
    * @Description:   <p> 中文转换拼音工具</p>
    * @Author: -  
    * @CreatTime:2017年8月30日 下午2:09:07   
    * @Modify By:   
    * @ModifyTime:  
    * @Modify marker:   
    * @version    V1.0
     */
    public class PinyinUtils {
    	
    	/** 
    	 * 获取汉字串拼音首字母,英文字符不变 
    	 * @param chinese 汉字串 
    	 * @return 汉语拼音首字母 
    	 */
    	public static String getChineseFirstWord(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[] word = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
    					if (word != null) {
    						pybf.append(word[0].charAt(0));
    					}
    				} catch (BadHanyuPinyinOutputFormatCombination e) {
    					e.printStackTrace();
    				}
    			} else {
    				pybf.append(arr[i]);
    			}
    		}
    		return pybf.toString().replaceAll("\W", "").trim();
    	}
    
    	/** 
    	 * 获取汉字串拼音,英文字符不变 
    	 * @param chinese 汉字串 
    	 * @return 汉语拼音 
    	 */
    	public static String getChineseAllWord(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 {
    					pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
    				} catch (BadHanyuPinyinOutputFormatCombination e) {
    					e.printStackTrace();
    				}
    			} else {
    				pybf.append(arr[i]);
    			}
    		}
    		return pybf.toString();
    	}
    	
    	/**
    	 * For Test By Jason
    	 */
    	public static void main(String[] args) {
    		//issue: 不能空格  woaizhongguo! byJson
    		System.out.println(getChineseAllWord("我爱中国! byJson"));
    		System.out.println(getChineseFirstWord("我爱中国! byJson"));//wazgbyJson
    	}
    }
    

      

  • 相关阅读:
    使用Eclipse进行远程调试【转】
    JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program
    Window 通过cmd查看端口占用、相应进程、杀死进程等的命令【转】
    A cycle was detected in the build path of project
    调用CXF工具 生成 WSDL【转】
    解决cxf+spring发布的webservice,types,portType和message以import方式导入
    Target runtime com.genuitec.runtime.generic.jee50 is not defined
    修改eclipse启动时eclipse使用的jre
    JAVA中堆栈和内存分配原理
    JVM -Xss调整Stack Space的大小 【转】
  • 原文地址:https://www.cnblogs.com/jasonandy/p/9243282.html
Copyright © 2011-2022 走看看