热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java-汉字繁体拼音转换

1importcom.github.stuxuhai.jpinyin.ChineseHelper;2importcom.github.stuxuhai.jpinyin.Piny
  1 import com.github.stuxuhai.jpinyin.ChineseHelper;
  2 import com.github.stuxuhai.jpinyin.PinyinFormat;
  3 import com.github.stuxuhai.jpinyin.PinyinHelper;
  4 
  5 /**
  6  * @ClassName: ChineseConvertPinyinUtil
  7  * @Description: 汉语繁体拼音转换工具类
  8  */
  9 public final class ChineseConvertPinyinUtil {
 10     private static final String SPACEMARK = "";
 11     private ChineseConvertPinyinUtil() {}
 12 
 13     /**
 14      * 检查汉字是否为多音字
 15      * @param pinYinStr 需转换的汉字
 16      * @param deleteBlank 转换后去掉非打印字符
 17      * @param spaceMark 非打印字符
 18      * @return true 多音字,false 不是多音字
 19      */
 20     public static boolean checkPinYin(char pinYinStr) {
 21         boolean check = false;
 22         try {
 23             check = PinyinHelper.hasMultiPinyin(pinYinStr);
 24         } catch (Exception e) {
 25             e.printStackTrace();
 26         }
 27         return check;
 28     }
 29 
 30     /**
 31      * 转换为每个汉字对应拼音首字母字符串
 32      * @param pinYinStr 需转换的汉字
 33      * @param deleteBlank 转换后去掉非打印字符
 34      * @param spaceMark 非打印字符
 35      * @return 拼音字符串
 36      */
 37     public static String convertToGetShortPinYin(String pinYinStr, boolean deleteBlank) {
 38         String tempStr = null;
 39         try {
 40             tempStr = PinyinHelper.getShortPinyin(pinYinStr);
 41         } catch (Exception e) {
 42             tempStr = pinYinStr;
 43             e.printStackTrace();
 44         }
 45         if (deleteBlank) {
 46             tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
 47         }
 48         return tempStr;
 49     }
 50 
 51     /**
 52      * 转换为有声调的拼音字符串
 53      * @param pinYinStr 汉字
 54      * @param deleteBlank 转换后去掉非打印字符
 55      * @param spaceMark 非打印字符
 56      * @return 有声调的拼音字符串
 57      */
 58     public static String convertToMarkPinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
 59         String tempStr = pinYinStr;
 60         try {
 61             if (spaceMark == null) {
 62                 spaceMark = SPACEMARK;
 63             }
 64             tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITH_TONE_MARK);
 65 
 66         } catch (Exception e) {
 67             tempStr = pinYinStr;
 68             e.printStackTrace();
 69         }
 70         if (deleteBlank) {
 71             tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
 72         }
 73         return tempStr;
 74     }
 75 
 76     /**
 77      * 转换为数字声调字符串
 78      * @param pinYinStr 需转换的汉字
 79      * @param deleteBlank 转换后去掉非打印字符
 80      * @param spaceMark 非打印字符
 81      * @return 转换完成的拼音字符串
 82      */
 83     public static String convertToNumberPinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
 84         String tempStr = null;
 85         try {
 86             if (spaceMark == null) {
 87                 spaceMark = SPACEMARK;
 88             }
 89             tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITH_TONE_NUMBER);
 90         } catch (Exception e) {
 91             tempStr = pinYinStr;
 92             e.printStackTrace();
 93         }
 94         if (deleteBlank) {
 95             tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
 96         }
 97         return tempStr;
 98     }
 99 
100     /**
101      * 繁体转换为简体
102      * @param pinYinSt
103      * @param deleteBlank 转换后去掉非打印字符
104      * @return
105      */
106     public static String convertToSimplified(String pinYinSt, boolean deleteBlank) {
107         String tempStr = null;
108         try {
109             tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt);
110         } catch (Exception e) {
111             tempStr = pinYinSt;
112             e.printStackTrace();
113         }
114         if (deleteBlank) {
115             tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
116         }
117         return tempStr;
118     }
119 
120     /**
121      * 转换为不带音调的拼音字符串
122      * @param pinYinStr 需转换的汉字
123      * @param deleteBlank 转换后去掉非打印字符
124      * @param spaceMark 非打印字符
125      * @return 拼音字符串
126      */
127     public static String convertToTonePinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
128         String tempStr = null;
129         try {
130             if (spaceMark == null) {
131                 spaceMark = SPACEMARK;
132             }
133             tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITHOUT_TONE);
134         } catch (Exception e) {
135             tempStr = pinYinStr;
136             e.printStackTrace();
137         }
138         if (deleteBlank) {
139             tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
140         }
141         return tempStr;
142     }
143 
144     /**
145      * 简体转换为繁体
146      * @param pinYinStr
147      * @param deleteBlank 转换后去掉非打印字符
148      * @return
149      */
150     public static String convertToTraditional(String pinYinStr, boolean deleteBlank) {
151         String tempStr = null;
152         try {
153             tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);
154         } catch (Exception e) {
155             tempStr = pinYinStr;
156             e.printStackTrace();
157         }
158         if (deleteBlank) {
159             tempStr = tempStr.replaceAll("\\s*", SPACEMARK);
160         }
161         return tempStr;
162     }
163 
164     public static void main(String[] args) {
165         String str = "重慶 most input \r\n a b c#        d";
166         System.out.println(convertToSimplified(str, true));
167         System.out.println(checkPinYin('重'));
168         System.out.println(convertToMarkPinYin(str, true, null));
169         System.out.println(convertToGetShortPinYin(str, true));
170         System.out.println(convertToNumberPinYin(str, true, null));
171         System.out.println(convertToTonePinYin(str, true, null));
172         System.out.println(convertToTraditional(str, true));
173     }
174 }

 依赖:

1

2 com.github.stuxuhai

3 jpinyin

4 1.1.8

5  

 


推荐阅读
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
author-avatar
MrTkinG
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有