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

根据城市首字母进行分类,区分多音字,获取城市首字母

多音字词典duoyinzi_pinyin.txta#阿ao#拗ai#艾bang#膀磅蚌ba#扒车扒拉扒皮bai#叔伯百柏杨bao#剥皮薄暴堡曝beng#蚌埠bi#复辟臂秘鲁泌阳b

多音字词典  duoyinzi_pinyin.txt

a#阿

ao#拗

ai#艾

bang#膀 磅 蚌

ba#扒车 扒拉 扒皮

bai#叔伯 百 柏杨

bao#剥皮 薄  暴 堡 曝

beng#蚌埠

bi#复辟  臂  秘鲁 泌阳

bing#屏弃 屏气 屏除 屏退 屏息

bian#扁 便

bo#薄荷 单薄 伯 伯爵  泊 波 柏 萝卜 孛

bu#卜

can#参

cang#藏

cen#参差

ceng#曾 噌

cha#差 刹那 宝刹 一刹 查

chai#公差 差役 专差 官差 听差 美差 办差 差事 差使 肥差 当差 钦差 苦差 出差

chan#颤 单于 禅

chang#长  厂

chao#朝 嘲

che#工尺 车

chen#称职 匀称 称心 相称 对称

cheng#称 乘 澄 噌吰 橙 秤

chu#畜

chui#椎心

chuan#传

chi#匙 尺 吃

chong#重庆 重重 虫

chou#臭

chuang#经幢

chuo#绰

ci#参差 伺  龟兹

cuan#攒钱 攒聚 攒动

cuo#撮儿 撮要 撮合

da#大 嗒

dao#叨

dai#大夫

dan#单 弹

dang#铛

de#的

di#堤 底 怎的 有的 目的 标的 打的 的确 的当 的士 地 提防

diao#蓝调 调调 音调 论调 格调 调令 低调 笔调 基调 强调 声调 滥调 老调 色调 单调 腔调 跑调 曲调 步调 语调 主调 情调

ding#丁

du#读 都 度

dou#全都 句读

duo#舵 测度 忖度 揣度 猜度

dun#粮囤 盾 顿 沌 敦

e#阿谀 阿胶 阿弥 恶心

er#儿

fan#番

feng#冯

fo#佛

fu#仿佛 果脯 罘

fou#否则 否定 应否 是否 与否 否决

ga#咖喱 伽马

gai#盖

gao#告

gang#扛鼎

ge#革 蛤蚧 文蛤 蛤蜊 咯

gei#给

geng#脖颈

gong#女红

gu#谷 中鹄  鼓

gui#龟 柜 硅

gua#呱

guan#纶巾 东莞

guang#广

ha#蛤

hai#还 嗨

hao#貉子 貉绒

hang#夯 总行 分行 支行 行业 排行 行情 央行 商行 外行 银行 商行 酒行 麻行 琴行 巷道

he#和 合 核

heng#道行

hu#鹄 水浒

hua#滑

huan#归还 放还 奉还

hui#会 浍河

hong#红 虹

huo#软和 热和 暖和

ji#病革 给养 自给 给水 薪给 给予 供给 稽 缉 藉 奇数 亟 诘屈 荠菜

jia#雪茄 伽 家 价 贾

jian#见

jiang#降

jiao#嚼舌 嚼子 细嚼 角 剿 饺 脚 蕉 矫

jie#解 慰藉 蕴藉 诘

jin#矜 劲

jing#颈 景

ju#咀嚼  居 桔 句

jun#均

juan#棚圈 圈养

jv#咀嚼 趑趄

jvan#猪圈 羊圈

jue#主角 角色 旦角 女角 丑角 角力 名角 配角 咀嚼 觉

jun#龟裂 俊

jvn#龟裂

ka#咖 卡 喀

kai#楷

kang#扛 扛活 扛大

ke#咳 壳

keng#吭

kuai#会计 财会 浍

kuo#括

la#癞痢 腊

lai#癞疮 癞子 癞蛤 癞皮

lao#积潦 络子 落枕 落价 粩 姥

le#乐 勒 了

lei#勒紧

lo#然咯

lou#佝偻

long#里弄 弄堂 泷

li#跞

liao#了解 了结  明了 了得 末了 未了 了如  了如指掌 潦

liang#靓 俩

liu#六

lu#碌 陆 露

luo#络 络 落 漯

lv#率 绿

lun#纶

mai#埋

man#埋怨 蔓

mai#脉

mang#氓 芒

mao#冒

meng#群氓 盟

mei#没

mo#埋没 隐没 脉脉 模 摩

mou#绸缪 牟

mi#秘 泌尿 分泌 谜

miu#谬 谬论 纰缪

mu#人模 字模 模板 模样 模具 装模 装模做样 模子

na#哪 娜 那

nan#南

ne#哪吒 呢

nong#弄

ni#毛呢 花呢 呢绒 线呢 呢料 呢子 呢喃 溺

niao#尿 鸟

nian#粘

niang#酿

niu#执拗 拗不

nu#努

nue#疟 疟疾

nuo#婀娜 袅娜

nv#女

nve#疟原 疟蚊

o#喔

pa#扒

pai#派 迫击 迫击炮

pao#刨 炮

pang#胖 膀胱 膀肿 磅礴

pi#辟 否极 臧否 龙陂 芘

pian#扁舟 便宜

piao#朴姓

ping#屏 苹

po#湖泊 血泊  迫 朴刀 坡 陂

pu#暴十 一曝十寒 里堡 十里堡 脯 朴 曝晒 瀑 埔

qi#期 其 泣

qiu#龟兹

qi#稽首 缉鞋 栖  奇 漆 齐

qia#卡脖 卡子 关卡 卡壳 哨卡 边卡 发卡

qiao#雀盲 雀子 地壳 甲壳 躯壳

qian#纤 乾

qiang#强

qie#茄 趔趄

qin#亲 沁

qing#干亲 亲家

qu#区 趣

quan#圈 券

que#雀

ruo#若

sai#塞

se#堵塞 搪塞 茅塞 闭塞 鼻塞 梗塞 阻塞 淤塞 拥塞 哽塞  色

sha#莎 刹车 急刹 急刹车 厦

shai#色子

shao#勺

shan#姓单 单县 杉

shang#衣裳

she#拾级 折本 射 蛇

shen#沙参 野参 参王 人参 红参 丹参 山参 海参 刺参 鹿参 什 身 沈

sheng#野乘 千乘 史乘  省 晟 盛

shi#钥匙 拾荒 捡拾 拾物 家什 什物 什锦 麻什  麦什 喀什 牛什  识 似的 食 石 氏 拾 适

shuai#表率 率性 率直 率真 粗率 率领 轻率 直率 草率 大率 坦率 衰

shuang#泷水

shu#属 数 术 熟

shui#游说

shuo#数见 数见不鲜  说

si#窥伺 伺弄 伺机 似 思

su#宿

sui#尿泡

ta#拓本 拓片 碑拓 疲沓 拖沓 杂沓 沓 塔 鸿塔

tang#汤

tao#陶

tan#弹性 弹力 反弹

ti#提 体

tiao#调

ting#町 听

tui#褪

tuo#拓

tun#囤 屯

wei#尾 蔚 圩

wu#无 可恶 交恶 好恶 厌恶 憎恶 嫌恶 痛恶 深恶

wan#藤蔓 枝蔓 瓜蔓 蔓儿  莞  万 百万 皖

wai#崴

xia#虾 吓 夏

xi#栖栖 系  蹊 洗 溪 戏

xiao#校 切削 削面 刀削 刮削

xian#纤细 光纤 纤巧 纤柔 纤小 纤维 纤瘦 纤纤 化纤 纤秀 棉纤 纤尘

xiang#降 巷

xie#解数 出血 采血 换血 血糊 尿血 淤血 放血 血晕 血淋 便血 吐血 咯血 叶韵 蝎 蝎子 邪

xiu#铜臭 乳臭 成宿 星宿

xin#馨 信 鸿信

xing#深省 省视 内省 不省人事 省悟 省察 行 旅行 例行 行程 行乐 龙行 人行 流行 先行 行星 品行  发行 行政 风行 龙行 龍行 麟行 荥

xu#牧畜 畜产 畜牧 畜养 吁 麦埂圩 浒

xue#削  血

xun#荨 寻

ya#琊

yao#钥匙 金钥 耀 曜

yan#咽  殷红 腌 烟

ye#液 抽咽 哽咽 咽炎 下咽 呜咽 幽咽 悲咽 叶  葉

yi#自艾 遗 屹

yin#殷

ying#荥经

yo#杭育

yong#涌

yu#余 呼吁 吁请 吁求 育 熨帖 熨烫 於

yuan#员

yun#熨

yue#约 乐音 器乐 乐律 乐章 音乐 乐理 民乐 乐队 声乐 奏乐 弦乐 乐坛 管乐 配乐 乐曲 乐谱  锁钥 密钥 乐团 乐器

za#绑扎 结扎 包扎 捆扎 咱家

zan#攒 咱

zang#宝藏 藏历 藏文 藏语 藏青 藏族 藏医  藏药 藏蓝 西藏

zai#牛仔 龟仔 龙仔 鼻仔 羊仔  仔仔 麻仔  麵包仔 麦旺仔 鸿仔 煲仔 福仔

ze#择

zeng#曾孙 曾祖

zong#综

zha#扎

zhai#宅

zhan#不粘 粘贴 粘连

zhao#朝朝 明朝 朝晖 朝夕 朝思 有朝 今朝 朝气 朝三 朝秦 朝霞 鹰爪 龙爪 魔爪 爪牙 失着 着数 龙爪槐

zhe#折 着

zhi#标识 吱 殖 枝

zhong#重 种

zhou#粥

zhu#属意 著

zhua#爪子

zhui#椎 隹

zhuo#执著 着装 着落 着意 着力 附着 着笔 胶着 着手 着重 穿着 衣着 执着 着眼 着墨 着实 沉着 着陆 着想 着色

zhuang#幢房 一幢 幢楼

zi#仔 兹

zu#足

zuo#柞

zui#咀




package com.renren.kylin.standard.util;


import java.io.*;
import java.util.HashMap;
import java.util.Map;


import com.google.common.io.Resources;
import org.apache.log4j.Logger;


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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;


public class PinyinUtils {


    private static final Logger logger = Logger.getLogger("devLog");


    public static Map dictiOnary= new HashMap();


    //加载多音字词典
    static{


        BufferedReader br = null;
        try {
            String filePath = PinyinUtils.class.getClassLoader().getResource("duoyinzi_pinyin.txt").getPath();
            File file = new File(filePath);
            //InputStream in = (InputStream) Resources.getResource("test.txt").getContent();
            br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));


            String line = null;
            while((line=br.readLine())!=null){


                String[] arr = line.split("#");


                if(StringUtils.isNotEmpty(arr[1])){
                    String[] sems = arr[1].split(" ");
                    for (String sem : sems) {


                        if(StringUtils.isNotEmpty(sem)){
                            dictionary.put(sem , arr[0]);
                        }
                    }
                }
            }


        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }


    public static String[] chineseToPinYin(char chineseCharacter) throws BadHanyuPinyinOutputFormatCombination{
        HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
        outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);


        if(chineseCharacter>=32 && chineseCharacter<=125){    //ASCII >=33 ASCII<=125的直接返回 ,ASCII码表:http://www.asciitable.com/
            return new String[]{String.valueOf(chineseCharacter)};
        }


        return PinyinHelper.toHanyuPinyinStringArray(chineseCharacter, outputFormat);
    }


    /**
     * 获取汉字拼音的全拼
     * @param chineseCharacter
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static String chineseToPinYinF(String chineseCharacter) throws BadHanyuPinyinOutputFormatCombination{
        if(StringUtils.isEmpty(chineseCharacter)){
            return null;
        }


        char[] chs = chineseCharacter.toCharArray();


        StringBuilder result = new StringBuilder();


        for(int i=0;i             String[] arr = chineseToPinYin(chs[i]);
            if(arr==null){
                result.append("");
            }else if(arr.length==1){
                result.append(arr[0]);
            }else if(arr[0].equals(arr[1])){
                result.append(arr[0]);
            }else{


                String prim = chineseCharacter.substring(i, i+1);
//              System.out.println("prim="+prim+"**i="+i);


                String lst = null,rst = null;


                if(i<=chineseCharacter.length()-2){
                    rst = chineseCharacter.substring(i,i+2);
                }
                if(i>=1 && i+1<=chineseCharacter.length()){
                    lst = chineseCharacter.substring(i-1,i+1);
                }


//              System.out.println("lst="+lst+"**rst="+rst);


                String answer = null;
                for (String py : arr) {


                    if(StringUtils.isEmpty(py)){
                        continue;
                    }


                    if((lst!=null && py.equals(dictionary.get(lst))) ||
                            (rst!=null && py.equals(dictionary.get(rst)))){
                        answer = py;
//                      System.out.println("get it,answer="+answer+",i="+i+"**break");
                        break;
                    }


                    if(py.equals(dictionary.get(prim))){
                        answer = py;
//                      System.out.println("get it,answer="+answer+",i="+i+"**prim="+prim);
                    }
                }
                if(answer!=null){
                    result.append(answer);
                }else{
                    logger.warn("no answer ch="+chs[i]);
                }
            }
        }


        return result.toString().toLowerCase();
    }


    public static String chineseToPinYinS(String chineseCharacter) throws BadHanyuPinyinOutputFormatCombination{
        if(StringUtils.isEmpty(chineseCharacter)){
            return null;
        }


        char[] chs = chineseCharacter.toCharArray();


        StringBuilder result = new StringBuilder();


        for(int i=0;i             String[] arr = chineseToPinYin(chs[i]);
            if(arr==null){
                result.append("");
            }else if(arr.length==1){
                result.append(arr[0].charAt(0));
            }else if(arr[0].equals(arr[1])){
                result.append(arr[0].charAt(0));
            }else{


                String prim = chineseCharacter.substring(i, i+1);
//              System.out.println("prim="+prim+"**i="+i);


                String lst = null,rst = null;


                if(i<=chineseCharacter.length()-2){
                    rst = chineseCharacter.substring(i,i+2);
                }
                if(i>=1 && i+1<=chineseCharacter.length()){
                    lst = chineseCharacter.substring(i-1,i+1);
                }


//              System.out.println("lst="+lst+"**rst="+rst);


                String answer = null;
                for (String py : arr) {


                    if(StringUtils.isEmpty(py)){
                        continue;
                    }


                    if((lst!=null && py.equals(dictionary.get(lst))) ||
                            (rst!=null && py.equals(dictionary.get(rst)))){
                        answer = py;
//                      System.out.println("get it,answer="+answer+",i="+i+"**break");
                        break;
                    }


                    if(py.equals(dictionary.get(prim))){
                        answer = py;
//                      System.out.println("get it,answer="+answer+",i="+i+"**prim="+prim);
                    }
                }
                if(answer!=null){
                    result.append(answer.charAt(0));
                }else{
                    logger.warn("no answer ch="+chs[i]);
                }
            }
        }
        return Character.toUpperCase(result.toString().toCharArray()[0])+"";
    }


    public static void main(String[] args) {


        try {


//          String str = "长沙绿爱旅行";
            String str = "长沙";


            System.out.println(str+" pyf="+PinyinUtils.chineseToPinYinF(str));
            System.out.println(str + " pys="+PinyinUtils.chineseToPinYinS(str));


        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
    }


}


推荐阅读
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
author-avatar
灵123456妞子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有