JAVA面向对象编程艺术与思想:中文转拼音2
来源:互联网 发布:房地产薪酬排名知乎 编辑:程序博客网 时间:2024/06/01 09:56
我现在用面向对象的思想来实现名字的转换
把名字中每个字都看成一个对象,建立类PinyinChar
该类包括字和拼音对象属性
package org.lrf.pinyin;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;/** * 单个汉字,属性包括拼音 * @author 33css.com * */public class PinyinChar{/** * 把单个汉字转成拼音 * @param content 单个汉字 * @param format 格式 */public PinyinChar(char content, HanyuPinyinOutputFormat format) {this.content = content;setPinyin(this.content, format);}private final char content; private String pinyin;public String getPinyin() {return pinyin;}/** * 把传入的汉字变成拼音 * @param content 汉字内容 * @param format 拼音格式 * @return */private void setPinyin(char content, HanyuPinyinOutputFormat format) {if ((int) content <= 128) {//如果小于128 说明不是中文汉字 则直接返回pinyin = String.valueOf(content);} else {try {pinyin = PinyinHelper.toHanyuPinyinStringArray(content, format)[0];//toHanyuPinyinStringArray多音字 会获取到数组 使用第一个字} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}}}@Overridepublic String toString() {return this.pinyin;}}
创建一个NameHandler,用于创建,管理,排序每一个pinyinChar集合,重写toSring方法以便调用者输出
package org.lrf.pinyin;import java.util.ArrayList;import java.util.List;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;public class NameHandler {public NameHandler(String name) {this.name = name;addPinYinNameToList();}private List<PinyinChar> pinyinChars;private String name;/** * 将名字转换成拼音 * * @throws BadHanyuPinyinOutputFormatCombination */ private void addPinYinNameToList() { pinyinChars = new ArrayList<>(); StringBuffer result = new StringBuffer(); for (int i = 0; i < name.length(); i++) { PinyinChar pinyinChar = new PinyinChar(name.charAt(i), createFormat()); pinyinChars.add(pinyinChar); } sortPinyinChars();//把名字放到姓的前面 } /** * 把名字放到姓的前面 */ private void sortPinyinChars() { pinyinChars.add(pinyinChars.get(0)); pinyinChars.remove(0); } /** * 创建样式 * @return */ public static HanyuPinyinOutputFormat createFormat() { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); return format; } /** * 拼接list中每个拼音 */ @Override public String toString() { StringBuffer result = new StringBuffer(); for (PinyinChar pinyinChar : pinyinChars) { result.append(pinyinChar.toString()).append(" ");} return result.toString(); }}
入口方法
package org.lrf.pinyin;public class Test {public static void main(String[] args) {System.out.println(new NameHandler("罗若峰").toString());}}
面向对象很美,我爱面向对象
阅读全文
5 0
- JAVA面向对象编程艺术与思想:中文转拼音2
- JAVA面向对象编程艺术与思想:中文转拼音1
- JAVA面向对象编程艺术与思想:打印日历2
- JAVA面向对象编程艺术与思想:打印日历1
- JAVA面向对象编程艺术与思想:打印日历3
- 面向对象与编程思想
- java面向对象编程思想
- Java面向对象编程思想
- java面向对象思想编程
- JAVA面向对象编程思想
- 把代码写成艺术,真正体会面向对象编程思想
- 面向对象编程思想(转)
- java编程思想,面向对象编程
- java学习之路 之 面向对象编程-面向对象与面向过程及面向对象的思想概念
- java面向对象思想之类与对象
- 面向对象设计思想与 golang 编程
- Java 面向对象编程思想之我见
- java 面向对象的编程思想
- jqurid 表格 弹窗layer
- zookeeper事务日志可视化
- 七牛云-Atlab API-鉴黄、暴恐、政治人物识别
- 关于MacOS升级10.13系统eclipse菜单灰色无法使用解决方案
- dotfiles
- JAVA面向对象编程艺术与思想:中文转拼音2
- Java设计模式——迭代器模式(Iterator Pattern)
- Java中Overload和Override的区别(动态多态和静态多态)
- POJ 1062.昂贵的聘礼
- 如何使用git以及常用的指令
- 实现微信小程序出现在最近打开任务列表中,同时微信也出现在最近任务列表中
- CS231n课程笔记--图像分类
- hadoop2.6.0伪分布式环境搭建
- 图文详解数据恢复软件EasyRecovery 11.5.0.3企业中文版官网下载、安装与注册激活教程