汉字转拼音 pinyin4j 字符串 MD
| Markdown版本笔记 | 我的GitHub首页 | 我的博客 | 我的微信 | 我的邮箱 | 
|---|---|---|---|---|
| MyAndroidBlogs | baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com | 
目录
介绍
pinyin4J 是一个可以将汉字转换成拼音的lib,非常实用,其提供的 PinyinHelper 这个静态类对外提供拼音转换的服务,主要用到以下两个方法:
static public String[] toHanyuPinyinStringArray(char ch) //将char(必须为汉字单字)转化为拼音,如果ch为非汉字,返回null
static public String[] toHanyuPinyinStringArray(char ch,HanyuPinyinOutputFormat outputFormat) //可以设置输出的格式测试
将字符转为拼音数组
char c='乾';
System.out.println(Arrays.toString(PinyinHelper.toHanyuPinyinStringArray(c)));//[qian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toGwoyeuRomatzyhStringArray(c)));//[chyan, gan]
System.out.println(Arrays.toString(PinyinHelper.toMPS2PinyinStringArray(c)));//[chian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toTongyongPinyinStringArray(c)));//[cian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toWadeGilesPinyinStringArray(c)));//[ch`ien2, kan1]
System.out.println(Arrays.toString(PinyinHelper.toYalePinyinStringArray(c)));//[chyan2, gan1]
char c='乾';
System.out.println(Arrays.toString(PinyinHelper.toHanyuPinyinStringArray(c)));//[qian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toGwoyeuRomatzyhStringArray(c)));//[chyan, gan]
System.out.println(Arrays.toString(PinyinHelper.toMPS2PinyinStringArray(c)));//[chian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toTongyongPinyinStringArray(c)));//[cian2, gan1]
System.out.println(Arrays.toString(PinyinHelper.toWadeGilesPinyinStringArray(c)));//[ch`ien2, kan1]
System.out.println(Arrays.toString(PinyinHelper.toYalePinyinStringArray(c)));//[chyan2, gan1]对于 乾 和 重 的拼音转换,以上方法分别得到的结果是:
汉语拼音:[qian2, gan1],[zhong4, chong2]
国语罗马字:[chyan, gan],[jonq, chorng]
注音符号拼音:[chian2, gan1],[jung4, chung2]
通用拼音:[cian2, gan1],[jhong4, chong2]
威妥玛拼音:[ch`ien2, kan1],[chung4, ch`ung2]
耶魯拼音:[chyan2, gan1],[jung4, chung2]拼音输出格式设置
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
System.out.println(Arrays.toString(PinyinHelper.toHanyuPinyinStringArray(c, format)));设置大小写,默认 LOWERCASE
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);//大小写,默认 LOWERCASE设置音调的样式:数字WITH_TONE_NUMBER,声调符WITH_TONE_MARK,无声调。默认 WITH_TONE_NUMBER
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//音调的样式,默认 WITH_TONE_NUMBER
//[QIAN2, GAN1],[QIÁN, GĀN],[QIAN, GAN]符合 V 的输出格式,使用U且带冒号WITH_U_AND_COLON,使用U且上面带雨点WITH_U_UNICODE,使用V符合WITH_V,默认 WITH_U_AND_COLON
format.setVCharType(HanyuPinyinVCharType.WITH_V);//符合 V 的输出格式,默认 WITH_U_AND_COLON
//[LU:, LU],[LÜ, LU],[LV, LU]字符串转拼音工具类
System.out.println(PinYinUtils.toPinYin("白乾涛"));//Bai2Qian2Tao1
System.out.println(PinYinUtils.getFirstPinYin("白乾涛"));//Bpublic class PinYinUtils {
    //获取字符串首个字符转为拼音后的首个字母的大写形式
    public static String getFirstPinYin(String content) {
        if (content == null || content.trim().length() == 0) {
            return "#";
        } else {
            char firstChar = content.trim().charAt(0);//取字符串首个字符
            if (firstChar >= 'A' && firstChar <= 'Z') { //如果是大写字母,直接返回
                return firstChar + "";
            } else if (firstChar >= 'a' && firstChar <= 'z') { //如果是小写字母,转为大写后返回
                return (firstChar + "").toUpperCase();
            } else {
                String[] array = PinyinHelper.toHanyuPinyinStringArray(firstChar);
                return array == null || array.length == 0 || array[0] == null || array[0].length() == 0 ? "#" : (array[0].charAt(0) + "").toUpperCase();
            }
        }
    }
    public static String toPinYin(String content) {
        return toPinYin(content, "", true, null);
    }
    /**
     * 将content转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换
     * 如: 明天 转换成 MINGTIAN
     *
     * @param content:要转化的汉字
     * @param spera:转化结果的分割符
     * @param firstUpperCase:是否首字母大写
     * @param format:格式封装类
     */
    public static String toPinYin(String content, String spera, boolean firstUpperCase, HanyuPinyinOutputFormat format) {
        if (content == null || content.trim().length() == 0) {
            return "";
        }
        if (spera == null) {
            spera = "";
        }
        if (format == null) {
            format = new HanyuPinyinOutputFormat();
        }
        StringBuilder pyBuilder = new StringBuilder();
        String temp;
        String[] pyArray = null;
        for (int i = 0; i < content.length(); i++) {
            char c = content.charAt(i);
            if ((int) c <= 128) {
                pyBuilder.append(c);
            } else {
                try {
                    pyArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
                if (pyArray == null) {
                    pyBuilder.append(c);
                } else {
                    temp = pyArray[0];
                    if (firstUpperCase) {
                        temp = pyArray[0].toUpperCase().charAt(0) + temp.substring(1);
                    }
                    pyBuilder.append(temp).append(i == content.length() - 1 ? "" : spera);
                }
            }
        }
        return pyBuilder.toString().trim();
    }
}2018-7-2
汉字转拼音 pinyin4j 字符串 MD的更多相关文章
- JAVA实现汉字转换为拼音 pinyin4j/JPinyin
		在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个很好大的工程,还好网上有公开的第三方jar支持转换,结合网上很多前辈的代 ... 
- 汉字转拼音Pinyin4j工具(C#、Java都可用)
		C#用法: string pinyin=GetStringPinYin("张三"); //方法如下 public static string GetStringPinYin(str ... 
- java实现将汉字转为拼音
		有时候为了方便操作程序的开发,需要将汉字转为拼音等操作.下面这个是自己结合网上的资料,加上自己在公司项目中的亲自实践.完整的实现了将汉字转为拼音的操作.这个Demo只是负责将其转换,在main方法中测 ... 
- 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母
		通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心 ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ... 
- Java通过pinyin4j实现汉字转拼音
		碰到个需求,需要按用户名字的首字母来排序.这就需要获取汉字对应的拼音了,突然就想起了pinyin4j这个jar包,于是就开始写了个汉字转拼音的工具类.在此记录一下,方便后续查阅 一.Pom依赖 ... 
- 汉字转拼音(pinyin4j)
		1.引入依赖 <dependency> <groupId>pinyin4j.sourceforge.net</groupId> <artifactId> ... 
- 最好用的汉字转拼音代码PinYin4Objc(PinYin4J的objc版本)
		转:https://github.com/kimziv/PinYin4Objc 最好用的汉字转拼音代码PinYin4Objc(PinYin4J的objc版本)(更新到v1.1.1,增加block异步处 ... 
- 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快
		1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ... 
- 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快
		1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ... 
随机推荐
- Ubuntu 安装Chrome
			apt方式安装Chrome 1.添加密匙 wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key a ... 
- 洛谷.3381.[模板]最小费用最大流(zkw)
			题目链接 Update:我好像刚知道多路增广就是zkw费用流.. //1314ms 2.66MB 本题优化明显 #include <queue> #include <cstdio&g ... 
- BZOJ.4456.[ZJOI2016]旅行者(分治 Dijkstra)
			题目链接 \(Description\) 给定\(n\times m\)的带边权网格图.\(Q\)次询问从点\((x_i,y_i)\)到点\((x_j,y_j)\)的最短路. \(n\times m\ ... 
- poj 3660 传递闭包 **
			题意:题目给出了m对的相对关系,求有多少个排名是确定的. 链接:点我 如果这个点到其他点的关系是确定的,那么这个点就是确定的,注意如果这个点到不了其他点,但其他点能到这个点,那么这个点和其他点的关系是 ... 
- WAP 2.0开发XHTML MP语法及常用功能
			XHTML Mobile Profile 的基本结构 <?xml version="1.0" encoding="utf-8"?> <!DOC ... 
- STM32CubeF4 FreeRTOS Examples don't work correctly with HAL_GetTick
			because the SysTick ISR has been assigned to the FreeRTOS xPortSysTickHandler() function without reg ... 
- how convert large HEX string to binary array ?
			how convert large HEX string to binary I have a string with 14 characters . This is a hex represanta ... 
- Linux声卡驱动框图
			1.声卡驱动注册完成后的框图 2.open & hw_params 完. 
- 【mybatis】mybatis进行批量更新,报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right
			使用mybatis进行批量更新操作: 报错如下: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an erro ... 
- 找了一个api管理工具
			找了一个工具,https://github.com/nutsteam/apiManager选择了如下方式,进行了安装. ● 下载https://git.oschina.net/zhoujingjie/ ... 
