精华内容
下载资源
问答
  • 2019-06-11 10:08:23

                                                                         汉字转拼音 自适应多音字处理 姓名自动切分

    目录

    一. 概要

    二. 适用场景

    三.代码运行效果

    四.代码的原理

    1. 到此为止,你可能会产生两个疑问:

    2. 解释第一个问题(汉字转拼音使用一个函数就可以,为什么我的会有三个函数)

    3. 内部时实现原理

    五.开源代码

    六.总结

    更新:现在已有c++,qt版本,js版本即将上传


    一. 概要

    如标题所示,本文的功能很明显

    (*不用急着看代码,我会开源,并介绍使用方法,先看各种简介描述,看看是否是你需要的)

    (*如果代码的下载量大,使用的人多,反馈的优化想法多,我会持久的更新,并且推出跨平台版本)

    二. 适用场景

    1.需要根据拼音或首字母,搜索包含姓名的列表

    2.需要把汉字转换为拼音(自动解决多音字,姓氏特殊读音问题)

    3.列表按照拼音首字母排序

    4.姓、名自动切分

    5.因系统不支持中文,需转换中文为拼音

    三.代码运行效果

    1. 获取输入姓名对应拼音的所有排列(列表搜索时使用),就一个函数,后面的注释就是运行结果,使用很简单。

    速度粗糙大概估计(win10系统 + i5-8265U + 单线程下 + 每人3个字 => 50人/毫秒)

    getComPingyinForStr("解红",fristPy,fullPy);    // fristPy =  "jg xg jh xh"  , fullPy =  "jiegong xiegong jiehong xiehong"
    getComPingyinForStr("查查",fristPy,fullPy);    // fristPy =  "cc zc cz zz"  , fullPy =  "chacha zhacha chazha zhazha"
    getComPingyinForStr("尉迟萌",fristPy,fullPy);  // fristPy =  "wcm ycm"  , fullPy =  "weichimeng yuchimeng"
    getComPingyinForStr("李石",fristPy,fullPy);    // fristPy =  "ld ls"  , fullPy =  "lidan lishi"
    getComPingyinForStr("小明",fristPy,fullPy);    // fristPy =  "xm"  , fullPy =  "xiaoming"

    2.获取输入姓名的拼音(唯一的),和上面的区别就相当于,在所有的拼音组合中选择最正确的一个。(100人/毫秒)

    一共有两个函数 myNameSplit(...)getNamePingyin(...)  ,使用方法很明显。

    QString names = { "东皇太一 尉迟小白 解波 卜艾 颜碧玉 句帅 杨红给 吕布 亚里士多缺德 覃黄埔 菊花拉姆 上官万" };
    QStringList nameList = names.split(" ");           
    for (size_t i = 0; i < nameList.size(); i++)
    {
      QString full, fist, last;
      full = nameList[i];
    
      myNameSplit(full, last, fist);           // 自动切分 [姓、名]
      last = getNamePingyin(last, true);       // 获取 [姓] 的拼音
      fist = getNamePingyin(fist, false);      // 获取 [名] 的拼音
    
      qout << full + " : " + last + "  " + fist << endl;
    }
    // 运行结果
    "东皇太一 : donghuang  taiyi"
    "尉迟小白 : yuchi  xiaobai"
    "解波 : xie  bo"
    "卜艾 : bu  ai"
    "颜碧玉 : yan  biyu"
    "句帅 : gou  shuai"
    "杨红给 : yang  honggei"
    "吕布 : lv  bu"
    "亚里士多缺德 : ya  lishiduoquede"
    "覃黄埔 : qin  huangpu"
    "菊花拉姆 : juhua  lamu"
    "上官万 : shangguan  wan"

    *注意:qout => #define qout qDebug()

    四.代码的原理

    1. 到此为止,你可能会产生两个疑问:

    a.汉字转拼音使用一个函数就可以,为什么我的会有三个函数

    getComPingyinForStr()  getNamePingyin()  myNameSplit()

    b.内部的原理实现原理是什么?

    2. 解释第一个问题(汉字转拼音使用一个函数就可以,为什么我的会有三个函数)

    a.  一对多:假如现在有一个列表,它有很多的姓名,我们想搜索出叫“解红”这个人,而“解”这个字有两个读音“xie jie”,你并不确定用户输入的拼音是什么(可能用户并不知道有多个读音),(红也是多音字“hong gong”),也就是说,我们要穷举所有可能的多音字排列。即:

    getComPingyinForStr("解红",fristPy,fullPy);    // fristPy =  "jg xg jh xh"  , fullPy =  "jiegong xiegong jiehong xiehong"

    b. 一对一:我现在想获取“解红”这个人的唯一拼音,虽然“解”是多音字,但是我们只能学选择一个读音,“红”也是同样的道理,我们知道“解”在做姓氏时读“xie”,"红"的常用读音是“hong”,所有输出结果因该是“xie hong”。

    一个多音字在做[姓,名]时可能会有不同的读音,所以使用 myNameSplit() 切分输入姓名的[姓,名],然后再使用getNamePingyin()分别获取拼音。

    c. 总结:使用三个函数实现所有功能并不过分

    3. 内部时实现原理

    在实现本功能之前,看过很多网上的资料与代码,总结下来,汉字转拼音有如下几种方式:

    1. 查表:

    但是有很多版本,他们使用的字库有的不完整,有的直接使用常用字库,也无法解决多音字问题,总之问题多,不能用。

    2. 用一个长长的switch语句实现:

    想要修改、补充根本不可能。

    3.号称找到了,汉字编码与拼音的规律,直接计算出拼音:

    这种只能查首字母,也无法决绝多音字问题。

     

    本文的方法(特色):

    1. 直接使用查表,虽然汉字编码有一定的规律但是意外情况太多。

    2.使用权威的字库(新华字典http://xh.5156edu.com/pinyi.html),并修改官万的部分错误与缺失。

    3.手动筛选所有的多音字(1000多个,很枯燥),建立多音字表,解决多音字问题。

    4.收集姓氏特殊读音表,解决特殊姓氏的准确拼音输出。

    5.收集复姓,自动切分 [姓、名]。

    6.输出纯英文字符(例如:ü 用 v 代替)。

     

    备注:

    1. 本代码使用了Qt ,但只使用了 qstring、 qstringlist、 qvector,如果你不想使用qt,直接使用标准的c++也可,只需要做很少的改动,代码内部会说明改的思路,其实直接使用c++的标准库效率更高,我之所以使用Qt是因为项目的关系,如前面所说,如果下载量多,我会修改成标准的c++版本(不使用任何其他的库),这样移植起来更方便些。

    2. 移植时可能会遇到的问题,IDE的默认编码问题。

    vs2017+qt+修改vs2017默认编码为UTF8+本代码 => 直接通过

    qtCreator+GUI程序+本代码  =>  直接通过

    移植的时候如果你直接使用qtCreator打开我的文件时,汉字可能是乱码的,

    你需要用如下步骤:qtCreator上新建[h,cpp] 文件+[ctrl+A] + [ctrl+C] + [ctrl+V] 的方式,直到代码所有汉字显示正常,打印输出汉字正常为止。

    产生乱码的原因就是vs2017和qtCreator的文本编码方式不一样,自行解决(不难)。

    五.开源代码

    1. 完整的代码下载连接

    csdn:https://download.csdn.net/download/weixin_38887369/11234672

    github:https://github.com/newMoonxx/ChineseToPinyin

    (尽量去github,因为它支持增量式更新,github里面的代码一定是最新的)

    2. 因为篇幅过长的原因(所有代码2000多行),所以这里只显示部分核心代码(省略各种表的细节,只象征性的显示几行),有个大概的了解即可,完整的内容自行下载咯。

    *下面的图片是对应文件详细内容折叠后效果(方便你看到大纲),后面的代码是简化省略版。

    头文件(省略版):

    /*
    0. 功能包括:自动分离姓名中的[姓,名];姓名转拼音(一对一,首字母+全拼音);姓名转拼音(一对多,首字母+全拼音)
    1. 版本:V1.0   日期:2019年06月06日
    2. 详情:
    	https://blog.csdn.net/weixin_38887369/article/details/91047524   // 本开源项目介绍
    	https://blog.csdn.net/weixin_38887369                            // 
    3. 版权所有 qq:2271590144,新月
    4. 使用语言:c++,使用库:qt
    5. qt库只使用了 qstring qstringlist qvector,如果你不想使用qt,直接使用标准的c++也可,只需要做很少的改动
       如果使用标准的c++库,改动如下:
       qstring     -> string
       qstringlist -> vector<string>
       qvector     -> vector
       a. cpp文件中的代码就300行左右,所以改动不多
       b. [vector,qvector],[string,qstring] 的相似度极高,很多函数都是一样的,所以改起来也容易
       c. 使用标准的string效率会更高
    6. 实际运用测试:
    	a. 已经商用,没什么问题
    	b. 速度测试,环境:win10系统 + i5-8265U + 单线程下 + 每人3个字 ,很粗糙的速度测试结果如下
    	   getComPingyinForStr() => 50 人/ms
    	   getNamePingyin()      => 100人/ms
    7. 使用方法:可以直接看本文件(.h文件)的注释 或 进入详情页面开,见第二条的网址 
    */
    #pragma once
    
    #include <qstring.h>
    #include <qstringlist.h>
    #include <qvector.h>
    
    
    /*
    0. vs2017的默认编码不是utf-8,如果在qt的IDE编辑不需要这句;如果在vs上开发并且不用qt,也不需要这句
    1. 我是在vs2017上使用qt, 如果没有这句,则QString str="哈哈"; str会是乱码的
    2. 如果你要使用CString ,则自己脑部...
    */
    #pragma execution_character_set("utf-8") // 
    
    // 汉字-拼音
    struct hanziTableS
    {
    	// 拼音
    	QString first_py;  // 首字母
    	QString full_py;   // 全拼
    
    	// 汉字
    	QString hanzis;
    };
    
    // 特殊姓氏发音
    struct lastNameTableS
    {
    	QString hanzi;
    	QString pinyi;
    };
    
    // 常用多音字
    struct multiToneWordTableS
    {
    	QString hanzi;
    	QString pinyi;
    };
    
    
    // ----- 外部使用 ----- //
    
    /* 
    0. 获取组合拼音(一可能对多),用于搜索
    1. eg: 
    	getComPingyinForStr("解红",fristPy,fullPy);    // fristPy =  "jg xg jh xh"  , fullPy =  "jiegong xiegong jiehong xiehong"
    	getComPingyinForStr("查查",fristPy,fullPy);    // fristPy =  "cc zc cz zz"  , fullPy =  "chacha zhacha chazha zhazha"
    	getComPingyinForStr("尉迟萌",fristPy,fullPy);  // fristPy =  "wcm ycm"  , fullPy =  "weichimeng yuchimeng"
    	getComPingyinForStr("李石",fristPy,fullPy);    // fristPy =  "ld ls"  , fullPy =  "lidan lishi"
    	getComPingyinForStr("小明",fristPy,fullPy);    // fristPy =  "xm"  , fullPy =  "xiaoming"
    */
    int getComPingyinForStr(const QString& inStr, QString& outFrist_py, QString& outFull_py);//ok
    /*
    0. 【姓、名】分别转拼音(严格的一一对应),用于汉字强转拼音
    1. 使用了:姓氏特殊读音字库 + 多音字常用读音字库 + 全字库
    2. eg:
    	str = getNamePingyin("春",true);   // str => "chun"
    	str = getNamePingyin("春",false);  // str => "chun"
    	
    	str = getNamePingyin("解",true);   // str => "xie"
    	str = getNamePingyin("解",false);  // str => "jie"
    	
    	str = getNamePingyin("翟",true);   // str => "zhai"
    	str = getNamePingyin("翟",false);  // str => "di"
    
    	str = getNamePingyin("参",true);   // str => "can"
    	str = getNamePingyin("参",false);  // str => "can"
    
    	str = getNamePingyin("单于",true);   // str => "chanyu"
    	str = getNamePingyin("单于",false);  // str => "danyu"
    */
    QString getNamePingyin(const QString& inStr, bool isLastName);//
    /*
    0. 自动切分 姓、名
    1. 基本只能应对普通的复姓(两个字),如果在复姓表中没有找到,则: 姓氏 = (fullName.size() == 4) ? fullName的前两个个字符 : fullName的第一个字符
    2. 备注:百度的姓氏基本就70多个,这里有90个,但是忽略的少数民族的姓氏,也不要认为复姓就是两个字,(《中国少数民族姓氏》汇总大概有1万多)
       例如:乌拉乌拉氏、爱新觉罗、钮钴禄、色氏、尼玛(我见过很多姓这个的)
    3. eg:
    	QString names = {"东皇太一 尉迟小白 解波 卜艾 颜碧玉 句帅 杨红给 吕布 亚里士多缺德 覃黄埔 菊花拉姆 上官万"};
    	QStringList nameList = names.split(" ");
    	for (size_t i = 0; i < nameList.size(); i++)
    	{
    		QString full, fist, last;
    		full = nameList[i];
    
    		myNameSplit(full, last, fist);
    		last = getNamePingyin(last, true);
    		fist = getNamePingyin(fist, false);
    
    		qout << full + " : " + last + "  " + fist << endl;
    	}
    	// 结果
    	"东皇太一 : donghuang  taiyi"
    	"尉迟小白 : yuchi  xiaobai"
    	"解波 : xie  bo"
    	"卜艾 : bu  ai"
    	"颜碧玉 : yan  biyu"
    	"句帅 : gou  shuai"
    	"杨红给 : yang  honggei"
    	"吕布 : lv  bu"
    	"亚里士多缺德 : ya  lishiduoquede"
    	"覃黄埔 : qin  huangpu"
    	"菊花拉姆 : juhua  lamu"
    	"上官万 : shangguan  wan"
    */
    void myNameSplit(const QString& inFullName, QString& outLastName, QString& outFirstName);
    
    
    // ----- 内部部使用 ----- //
    
    /*
    0. 获取一个汉字的【所有】拼音(首字母、全拼)
    1. 使用字库 : hanziTables[]
    2. 输出不会为空,除非输入就等于空
    3. 如果输入为非中文字符,则返回和输入一样
    4. inWord 只能输入一个汉字,否则返回-1
    5. eg:
       getAllPingyinForWord("句",fristPy,fullPy); // fristPy => {"g","j"} , fullPy => {"gou","ju"}
       getAllPingyinForWord("龙",fristPy,fullPy); // fristPy => {"l"}     , fullPy => {"long"}
    */
    int getAllPingyinForWord(const QString& inWord, QStringList& outFrist_py, QStringList& outFull_py); // ok
    
    /*
    0. 获取一个字的拼音,如果是多音字返回常用读音
    1. 偏向于名的发音偏好,而不是姓氏的发音偏好
    2. 输出不会为空,除非输入就等于空
    3. 使用字库:multiToneWordTable[](多音字库)+ hanziTables[](全字库)
    4. 如果输入为非中文字符,则返回和输入一样
    5. 多音字的取舍规则见:multiToneWordTable[]
    6. inWord 只能输入一个汉字,否则直接放回输入内容
    7. eg:
       str = getNoRepeatPingyinForWord("大"); // str => "da"
       str = getNoRepeatPingyinForWord("解"); // str => "jie"
       str = getNoRepeatPingyinForWord("石"); // str => "shi"
    */
    QString getNoRepeatPingyinForWord(const QString& inWord);//ok

    源文件(省略版):

    #include "myPinyin.h"
    
    #define g_length_lastNameTable 554
    #define g_length_multiToneWordTable 708
    #define g_length_hanziTables 411
    
    
    /* 
    0. 姓氏特殊读音(包括:特殊、非特殊、复姓读音)
    1. 可以自己添加
    3. 来源于各种网络数据的整合
    */
    lastNameTableS lastNameTable[g_length_lastNameTable] =
    {
    	{ "赵" , "zhao" },
    	{ "钱" , "qian" },
    	{ "孙" , "sun" },
    	{ "羊角" , "yangjue" },
    	{ "中行" , "zhonghang" },
    	{ "禚" , "zhuo" },
    	{ "迮" , "ze" },
    	{ "覃" , "qin" },
        ......
    };
    
    
    /*
    0. 多音字表 
    1. 后面的注释表示的是:这个字剩余的其他读音 (日、韩分别表示汉字是日语或韩语)
    2. 来源于 hanziTables[],(遍历的所有,没有遗漏)
    3. 多音字选中读音规则:
       a. 选择常用读音 :
    		{ "红" , "hong" },      // gong  
    		{ "薄" , "bo" },        // bao
    		{ "拆" , "chai" },      // ca
       b. 选择根据拼音可以猜出汉字的读音。这种字大家知道是多音字,如果我输出'ju'你基本可以猜到汉字'句',但是我输出'gou'你还能猜到汉字是'句'就...
    		{ "句" , "ju" },        // gou
    		{ "旁" , "pang" },      // bang
    		{ "给" , "gei" },       // ji
    		{ "艾" , "ai" },        // yi
    		{ "大" , "da" },        // dai
    		{ "炮" , "pao" },       // bao
       c. 选中非姓氏读音
    		{ "仇" , "chou" },      // qiu ,仇:作姓氏时读qiú
    		{ "解" , "jie" },       // xie ,解:作姓氏时读xiè
    		{ "曾" , "ceng" },      // zeng,曾:作姓氏时读zēng
       d. 选中姓名中比较可能出现的字,下面的例子可能恰好符合其他的规则,但是在我手动筛选多音字时确实考虑到这方面的情况,因为有些多音字的其中一些读音代表的意义明显不可能被当名字来使用,因为筛选时没记录,下面的例子可能不贴切
    		{ "盛" , "sheng" },     // cheng , 茂盛(maoSheng),盛饭(chengFan)
    		{ "石" , "shi" },       // dan    , 潘石屹
    		{ "矜" , "jin" },       // qin guan
    		{ "强" , "qiang" },     // jiang , 坚强(qiang),倔强(jiang)
       e. 需要上下文联系的,这种字没法了,只能查表,这里的输出原则遵循(abcd)
    		{ "屏" , "ping" },      // bing , 屏幕、屏弃
    		{ "卜" , "bu" },        // bo ,   占卜、萝卜
    */
    multiToneWordTableS multiToneWordTable[g_length_multiToneWordTable] =
    {
    	{ "厑" , "e" },         // si a
    	{ "吖" , "ya" },        // a
    	{ "阿" , "a" },         // e
    	{ "凹" , "ao" },        // wa 
    	{ "嚣" , "xiao" },      // ao
    	{ "夭" , "ao" },        // yao 
    	{ "伯" , "bo" },        // bai  ba
    	{ "大" , "da" },        // dai 
    	{ "弹" , "tan" },       // dan
    	{ "般","ban" },          // bo pan 
    	{ "剥","bao" },          // bo 
    	......
    };
    
    
    /*
    0. 汉字拼音表,来源于 http://xh.5156edu.com/pinyi.html (需要自己获取数据)
    1. 在'bo'添加'卜' ; 'de'添加'的' ; 'wan'添加'涴' (获取到的数据有缺失,是网站的问题,这里直接补全)
    2. ü 用 v 代替
    */
    hanziTableS hanziTables[g_length_hanziTables] =
    {
    { "a","a","吖阿呵啊腌锕錒嗄厑" },
    { "a","ao","凹柪梎軪熬爊敖厫隞蔜遨廒嗷嗸獓嶅滶獒摮璈磝螯聱翱翶謷謸鳌翺嚣鏖鷔鰲鼇艹夭芺抝拗袄镺媪媼襖岙岰垇坳傲奡奥奧骜嫯慠懊墺澳嶴擙鏊驁澚鱜" },
    { "a","ang","肮骯卬仰岇昂昻枊盎醠" },
    { "a","ai","哎哀诶唉娭挨埃溾嗳锿鎄捱皑啀凒溰敱敳嘊皚癌騃佁毐昹欸娾矮蔼躷噯濭藹譪霭靄艾阨伌爱砹硋隘嗌嫒塧碍愛叆暧瑷僾噫壒懓嬡薆鴱餲璦曖懝皧瞹馤礙譺鑀靉閊魞﨟鱛鱫" },
    { "a","an","厂广安侒峖桉氨庵偣谙菴萻葊媕腤痷鹌誝蓭鞍鞌諳盦馣鮟盫鵪鶕韽玵啽雸儑垵俺唵埯铵晻揞罯銨屵犴岸按洝荌胺豻案婩隌堓暗貋錌闇黯" },
    
    { "b","bai","挀掰白犤百伯佰陌柏栢捭絔摆擺襬庍呗拝败拜敗猈稗粺薭贁韛瓸竡粨兡" },
    { "b","ba","丷八仈巴叭朳玐吧岜扷芭夿疤柭釟蚆粑笆捌哵羓豝鲃叐茇妭拔炦胈癹菝軷詙跋颰魃鼥把钯鈀靶伯弝坝爸杷垻罢耙跁鲅罷鮁覇矲霸壩灞欛抜鎺鯐" },
    ......
    { "z","zuo","作嘬穝昨莋秨笮捽琢筰鈼稓左佐撮繓阼坐怍岞岝侳祚胙袏座唑做葃葄飵糳咗" }
    };
    
    
    int getComPingyinForStr(const QString & inStr, QString & outFrist_py, QString & outFull_py)
    {
    	// --- 条件返回
    	outFrist_py.clear();
    	outFull_py.clear();
    	if (inStr.isEmpty())
    	{
    		return -1;
    	}
    
    
    	// --- 获取每个字的所有读音
    	int numOfWord = inStr.size();
    	QVector<QStringList> fristPys;
    	QVector<QStringList> fullPys;
    	for (int i_word = 0; i_word < numOfWord; i_word++)
    	{
    		QStringList fristPy;
    		QStringList fullPy;
    		getAllPingyinForWord(inStr.at(i_word), fristPy, fullPy);
    
    		fristPys.push_back(fristPy);
    		fullPys.push_back(fullPy);
    	}
    
    
    	// --- 开始排列组合
    	QVector<int> nowIndexList;
    	QVector<int> maxIndexList;
    	int sum_maxIndexList = 0;
    	for (size_t i = 0; i < numOfWord; i++)
    	{
    		nowIndexList.push_back(0);
    		maxIndexList.push_back(fullPys[i].size() - 1);
    		sum_maxIndexList += maxIndexList[i];
    	}
    
    
    	// --- 第一次组合(所有采用第一个)
    	bool mustCombination = sum_maxIndexList > 0 ? true : false;
    	for (size_t i = 0; i < numOfWord; i++)
    	{
    		outFrist_py += fristPys[i][0];
    		outFull_py += fullPys[i][0];
    	}
    
    
    	// --- 循环遍历
    	while (mustCombination)
    	{
    		// --- 组合排列
    		bool alreadyRunOnce = false;
    		for (size_t i = 0; i < numOfWord; i++)
    		{
    			if (alreadyRunOnce)
    			{
    				break;
    			}
    
    			if (maxIndexList[i] != 0)
    			{
    				if (nowIndexList[i] < maxIndexList[i])
    				{
    					alreadyRunOnce = true;
    					nowIndexList[i]++;
    				}
    				else if (nowIndexList[i] == maxIndexList[i])
    				{
    					nowIndexList[i] = 0;
    				}
    			}
    		}
    
    		// --- 组合输出字符
    		outFrist_py += " ";
    		outFull_py += " ";
    		for (size_t i = 0; i < numOfWord; i++)
    		{
    			outFrist_py += fristPys[i][nowIndexList[i]];
    			outFull_py += fullPys[i][nowIndexList[i]];
    		}
    
    		// --- 退出条件
    		bool canOut = true;
    		for (size_t i = 0; i < numOfWord; i++)
    		{
    			if (nowIndexList[i] != maxIndexList[i])
    			{
    				canOut = false;
    				break;
    			}
    		}
    		if (canOut)
    		{
    			break;
    		}
    	}
    
    
    	// --- 返回
    	return 0;
    }
    
    QString getNamePingyin(const QString & inStr, bool isLastName)
    {
    	QString outStr;
    
    	// ----- 姓氏
    	if (isLastName)
    	{
    		// --- 在百家姓中查找
    		for (size_t i = 0; i < g_length_lastNameTable; i++)
    		{
    			if (inStr == lastNameTable[i].hanzi)
    			{
    				outStr = lastNameTable[i].pinyi;
    				break;
    			}
    		}
    	}
    
    	// --- 直接汉字库查找
    	if (outStr.isEmpty())
    	{
    		for (int i = 0; i < inStr.size(); i++)
    		{
    			outStr += getNoRepeatPingyinForWord(inStr[i]);
    		}
    	}
    
    
    	return outStr;
    }
    
    void myNameSplit(const QString & inFullName, QString & outLastName, QString & outFirstName)
    {
    	const int doubleLastNameLength = 90;
    	static QString doubleLastName[doubleLastNameLength] =
    	{
    		"欧阳" , "太史" , "端木" , "上官" , "司马" , "东方" , "独孤" , "南宫" , "万俟" , "闻人" ,
    		"夏侯" , "诸葛" , "尉迟" , "公羊" , "赫连" , "澹台" , "皇甫" , "宗政" , "濮阳" , "公冶" ,
    		"太叔" , "申屠" , "公孙" , "慕容" , "仲孙" , "钟离" , "长孙" , "宇文" , "司徒" , "鲜于" ,
    		"司空" , "闾丘" , "子车" , "亓官" , "司寇" , "巫马" , "公西" , "颛孙" , "壤驷" , "公良" ,
    		"漆雕" , "乐正" , "宰父" , "谷梁" , "拓跋" , "夹谷" , "轩辕" , "令狐" , "段干" , "百里" ,
    		"呼延" , "东郭" , "南门" , "羊舌" , "微生" , "公户" , "公玉" , "公仪" , "梁丘" , "公仲" ,
    		"公上" , "公门" , "公山" , "公坚" , "左丘" , "公伯" , "西门" , "公祖" , "第五" , "公乘" ,
    		"贯丘" , "公皙" , "南荣" , "东里" , "东宫" , "仲长" , "子书" , "子桑" , "即墨" , "达奚" ,
    		"褚师" , "吴铭" , "纳兰" , "归海" , "东皇" , "泽翁" , "阿扎" , "泽朗" , "索朗" , "邓真"
    	};
    
    	// --- 如果有非汉字字符,直接返回
    	for (size_t i = 0; i < inFullName.length(); i++)
    	{
    		ushort uni = inFullName.at(i).unicode();
    		if (uni < 0x4E00 || uni > 0x9FA5)
    		{
    			outLastName = "";
    			outFirstName = inFullName;
    			return;
    		}
    	}
    
    
    	//
    	outLastName = "";
    	outFirstName = "";
    
    	if (inFullName.isEmpty())
    	{
    	}
    	else if (inFullName.length() == 1)
    	{
    		outFirstName = inFullName;
    	}
    	else if (inFullName.length() == 2)
    	{
    		outLastName = inFullName.at(0);
    		outFirstName = inFullName.at(1);
    	}
    	else
    	{
    		QString guessLastName = inFullName.mid(0,2);
    		for (int i = 0; i < doubleLastNameLength; i++)
    		{
    			if (guessLastName == doubleLastName[i])
    			{
    				outLastName = doubleLastName[i];
    				outFirstName = inFullName.mid(2);
    				break;
    			}
    		}
    
    		if (outLastName.isEmpty())
    		{
    			if (inFullName.length() == 4)
    			{
    				outLastName = inFullName.mid(0,2);
    				outFirstName = inFullName.mid(2);
    			}
    			else
    			{
    				outLastName = inFullName.at(0);
    				outFirstName = inFullName.mid(1);
    			}			
    		}
    
    	}
    
    }
    
    
    
    int getAllPingyinForWord(const QString& inWord, QStringList& outFrist_py, QStringList& outFull_py)
    {
    	// 
    	static Qt::CaseSensitivity cs = Qt::CaseSensitive;
    
    	// 只能输入一个字符
    	if (inWord.size() > 1)
    	{
    		return -1;
    	}
    
    
    	//
    	outFrist_py.clear();
    	outFull_py.clear();
    
    	ushort uni = inWord[0].unicode();
    	if (uni >= 0x4E00 && uni <= 0x9FA5)
    	{
    		for (int index_table = 0; index_table < g_length_hanziTables; index_table++)
    		{
    			if (hanziTables[index_table].hanzis.indexOf(uni, 0, cs) != -1)
    			{
    				outFrist_py.append(hanziTables[index_table].first_py);
    				outFull_py.append(hanziTables[index_table].full_py);
    			}
    		}
    	}
    
    	if (outFrist_py.isEmpty())
    	{
    		outFrist_py.append(inWord);
    	}
    	if (outFull_py.isEmpty())
    	{
    		outFull_py.append(inWord);
    	}
    
    	return 0;
    }
    
    QString getNoRepeatPingyinForWord(const QString& inWord)
    {
    	QString outPingyin;
    
    	// 只能输入一个字符
    	if (inWord.size() > 1)
    	{
    		return inWord;
    	}
    
    
    	// ----- 先在多音字里面查询
    	for (int i = 0; i < g_length_multiToneWordTable; i++)
    	{
    		if (inWord == multiToneWordTable[i].hanzi)
    		{
    			outPingyin = multiToneWordTable[i].pinyi;
    			break;
    		}
    	}
    
    	// ----- 继续查询
    	if (!outPingyin.isEmpty())
    	{
    		return outPingyin;
    	}
    
    	// ----- 在全字库查找
    	static Qt::CaseSensitivity cs = Qt::CaseSensitive;
    	ushort uni = inWord[0].unicode();
    	if (uni >= 0x4E00 && uni <= 0x9FA5)
    	{
    		for (int index_table = 0; index_table < g_length_hanziTables; index_table++)
    		{
    			if (hanziTables[index_table].hanzis.indexOf(uni, 0, cs) != -1)   // QString.contains() 内部调用indexOf(),  所以这里直接使用indexOf()
    			{
    				outPingyin = hanziTables[index_table].full_py;
    				break;
    			}
    		}
    	}
    
    	//
    	if (outPingyin.isEmpty())
    	{
    		outPingyin = inWord;
    	}
    
    	// ----- 返回结果
    	return outPingyin;
    }
    
    

    六.总结

    1. 到此为止所有的使用方法(看头文件即可) 和 代码原理已近讲解完毕。

    2. 如果你有更好的想法或改进的建议,请告诉我。

    3. 真如开始所说的,如果使用的人多,反馈的优化想法多,我会持久的更新,并且推出跨平台版本(纯c++版本,方便移植)。

    4. 原创不易,转载注明。

     

    更多相关内容
  • 2021年汉字的手抄报内容 汉语拼音文字.pdf
  • 该资源可以把app的字体设置成自己想要的字体,目前支持带拼音的字体设置,十分钟就可给自己开发的应用换一套字体,也可以局部替换需要设置的字体,只需要进行相应字体属性的设置即可,根据本资源的内容的介绍和流程操作,...
  • 此例中输入的中文字符串“万万保重”,有三个是多音,所以alert对话框中显示的是多种读音的组合; 如何实现? 如何实现通过拼音首字母快速查找页面内的中文内容呢? 过程原理是这样的:例如要对一些人名进行快速...
  • android 汉字转拼音带多音识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug。长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qing。于是排序出了问题。 汉字...
  • 内容索引:VB源码,字符处理,拼音 获取汉字拼音首字母,返回大写字母,支持GB一级、二级汉字,一级汉字,不支持GBK汉字,会返回错误的首字母。多音无法辨别!采用了完整的二级汉字首字母表并编码。  还有一些问题...
  • 本次和大家分享的是一个集成1:小写拼音 2:大写拼音 3:数字 4:汉字的验证码生成类,从标题来看感觉很普通的样子,没错的确很普通,只是这个验证码类生成的时候可以通过参数指定验证码返回格式的规则,更主要的是...
  • 宝宝拼音汉字田格doc模板下载

    千次阅读 2021-02-05 01:34:54
    这套《田格word模板.doc》很标准。...界面预览图:本拼音格word模板是一份标准小学生拼音格模板红人田格加拼音四线格A4模板。制作田格最常用的方法莫过于使用表格。稍复杂一点的,如制作描红式田...

    这套《田字格word模板.doc》很标准。是目前标准的doc格式田字格打印模板,网上很多都不标准。这个田字格word模板,每行12个田字格,每页15行,共180个格,本文档为10页,您只需下载这个拼音田字格word模板,直接打印就行了。

    界面预览图:

    fbcf59c96dbc3ee14bde94767680d1ee.gif

    本拼音田字格word模板是一份标准小学生拼音田字格模板红人田字格加拼音四线格A4模板。

    制作田字格最常用的方法莫过于使用表格。稍复杂一点的,如制作描红式田字格字帖,可配合页眉或页脚来实现。如果您不会自己制作田字格,可以直接下载这个拼音田字格模版来用用,直接打印出来就OK了。

    小提示:

    如果只需少数几页,打印前几页就OK了。如果需要更多的页数,多次打印就OK了。这个拼音汉字田字格doc模板文档可编辑。。你可以更改一些内容再打印。

    用WPS自己制作拼音田字格教程:

    1、打开WPS表格开始制作拼音田字格word模板。

    78249f1ecd3006d457907695f737e231.png

    2、第一步点击Ctrl+A选择全部单元格。

    1e8ce1f3fea097391b97ead9854851da.png

    3、而后单击鼠标右键,单击菜单栏格式--行--行高。

    6ec9ff6b37b3925fddae21c0b349dde6.png

    4、把行高设置成17磅,点击确定。

    82236b71e1cb38a4d82019275834dadd.png

    5、再点击格式--列--列宽。

    49166f41ca88e31b54a3356f34a3ec47.png

    6、设置列宽17磅,点击确定。

    061abd1761d886f912341627b78237f2.png

    7、这样就把所有单元格就变成了一个个小正方形。

    ae80bb904b14593c7dff3a47a69bfae7.png

    8、先来设置田字格的格式,用四个小正方形单元格构成一个田字格,选择A4:B5四个单元格。

    e6c316ac01f09f5727cff58418509ec8.png

    9、而后单击格式→单元格,打开单元格格式对话框。

    b333f0387440050f9caae7c76473f850.png

    10、单击上部的边框标签,通过边框对田字格进行设置。

    b710d61efc25473ee173c3d410fcc6f1.png

    11、从右侧的线条样式中选择虚线,而后单击上方预置中的内部按钮;再从右侧的线条样式中选择细实线,而后再单击上方预置中的外边框按钮。

    d417b7b47d3577ca1c6ce5660b57f48d.png

    12、最后单击确定退出。这样一个田字格就制作好了。

    d2baff564d1be760c77931f7e0a97ebf.png

    13、保持A4:B5四个单元格的选择状态,把鼠标指向选择区域右下方的填充柄,而后向右拖动鼠标至右侧的边界虚线,通过自动填充设置出一行田字格。

    b4f7b8d34e1463144222b286d11091cb.png

    14、再来设置拼音格的格式。选择第一行的单元格A1:AB1,单击合并及居中按钮,

    d194fb93085fe91fad4cb3ce72e9829f.png

    15、而后打开边框按钮的下拉菜单,选择全部框线。

    93a436b7dfe2ec2779ccc3d157f2b5fe.png

    16、保持该单元格的选择状态,把鼠标指向右下方的填充柄,拖动鼠标填充至第三行,设置出拼音格。

    1a25fc5e0a83a5aa257071a4846f5675.png

    17、选择A1:AB5,而后用鼠标拖动填充柄向下填充。因为拼音格比较高,还需要调整使其变低,因此填充时要超过下边界几行。

    db07fb65a0bc35083a881896a0aa2155.png

    18、在边界线外侧的单元格AC1:AC3中输入a,AC4:AC5中输入b。而后选择AC1: AC5,拖动填充柄向下填充至表尾。这样拼音格行末对应的都是a,田字格行末对应的都是b。

    0105403e32622e29adaf69421a3a09ae.png

    19、这样,田字格格式就设置好了。

    9ceca50f2430ec35348470b1f4a31c1f.png

    20、WPS制作拼音田字格还是比较简单的,但是如果用word来制作的话会麻烦很多,建议您下载本页提供的这个已经制作好的拼音汉字田字格doc模板来用用,这份Word模板,省得您自己制作了。

    展开全文
  • 有关win10系统取消电脑文件显示以字母数字拼音分组的操作方法想必大家有所耳闻。但是能够对win10系统取消电脑文件显示以字母数字拼音分组进行实际操作的人却不多。其实解决win10系统取消电脑文件显示以字母数字拼音...

    有关win10系统取消电脑文件显示以字母数字拼音分组的操作方法想必大家有所耳闻。但是能够对win10系统取消电脑文件显示以字母数字拼音分组进行实际操作的人却不多。其实解决win10系统取消电脑文件显示以字母数字拼音分组的问题也不是难事,小编这里提示两点:1、如图中文件夹,其中的文件以数字,字母,拼音分组显示; 2、如果想恢复常用的文件夹显示方式,可先在文件夹空白处点击鼠标右键;;掌握这些就够了。如果还想了解更多详细内容,可继续学习下面关于win10系统取消电脑文件显示以字母数字拼音分组的操作方法的介绍。

    1、如图中文件夹,其中的文件以数字,字母,拼音分组显示;

    75d7057e4cf899d88ca6dded96486a92.png

    2、如果想恢复常用的文件夹显示方式,可先在文件夹空白处点击鼠标右键;

    3、点击鼠标右键后,会弹出一个菜单;

    96c4835dfca5e1983c6b44a56e516f50.png

    4、将鼠标指针移动到菜单中的“分组依据”项,又会弹出一个子菜单;

    cf7156bfbf1853d9b69e6f1cca40d0f5.png

    5、用鼠标左键点选其中的“(无)(n)”;

    9768ae942bf79b545c85168f8825077b.png

    6、点选后,文件夹就恢复成常用的显示状态了。

    2a5119eac95e69d737de7d8364063781.png

    关于windows10电脑文件显示以字母数字拼音分组的取消方法就给大家分享到这边了,有遇到这样情况的朋友们可以按照上面的方法来解决吧。

    展开全文
  • 效果图如下所示: 代码如下: <!DOCTYPE html PUBLIC “-//... <head> <title>中文首字母排序<...link rel=”stylesheet” href=”css/listnav.css” type=”text/css” media=”screen” charset=”u
  • 怎么为整篇word文字添加拼音标注

    千次阅读 2020-12-24 04:11:51
    怎么为整篇word文字添加拼音标注怎么为整篇word文字添加拼音标注 由于对word宏命令不太熟悉,我将个任务分解为三部分,第一,了解光标的移动指令;第二,了解加拼音的命令;第三,对排版进行一些美化调整。 第一点,并...

    怎么为整篇word文字添加拼音标注

    怎么为整篇word文字添加拼音标注 由于对word宏命令不太熟悉,我将个任务分解为三部分,第一,了解光标的移动指令;第二,了解加拼音的命令;第三,对排版进行一些美化调整。 第一点,并不复杂,简单录制一个宏,移动一下光标,就很清楚地看到移动的指令了。 Selection.MoveRightunit:=wdCharacter,Count:=1,Extend:=wdExtend 接下来,我在msdn简单浏览了一下selection对象以及一些move前缀的方法,初步了解了一些移动的指令。 第二点,我右键点了下菜单,在自定义菜单中找了“拼...

    word

    2014/04/18

    word录制宏为整篇word文档加拼音标注的方法

    word录制宏为整篇word文档加拼音标注的方法 打印一篇童话,突然想到如果为童话加上标音会更适合小孩阅读,就试图为整篇文档加拼音标注,但结果令我失望,微软的word加拼音有字数限制,每次只能为几十个字加拼音标注,如果以这种方式为一篇几千字的童话加拼音,工作量将会令人无法忍受。为此,我决定为word加一个简单的宏命令,令这个工作简单化。 由于对word宏命令不太熟悉,我将个任务分解为三部分,第一,了解光标的移动指令;第二,了解加拼音的命令;第三,对排版进行一些美化调整。 第一点并不复杂,简单录制一个宏,移动一下光标,就很清楚地看到移动的指令了。...

    word

    2013/04/11

    在Word2003文档中如何给文字添加拼音呢?

    在Word2003文档中如何给文字添加拼音呢? 在Word2003文档中面对陌生文字时,我们有必要给该文字加上拼音指南,这样便于他人阅读时能更好地理解文字中的意思.下面我们一起来看看Word 2003是如何给文字添加拼音的吧. 步骤 1.打开Word 2003这款软件,进入Word 2003的操作界面,如图所示: 2.在这个编辑输入区输入一些文字,如图所示: 3.按下键盘上的Ctrl+A选择我们的文字,如图所示: 4.在上面的菜单区找到拼音指南选项,如图所示: 5.点击拼音指南选项,弹出拼音指南对话框,如图所示: 6.在这个拼音指南对话框内,...

    其他

    2016/10/15

    WPS Word文档中怎么为文字添加拼音

    WPS Word文档中怎么为文字添加拼音 今天,小编给大家介绍WPS Word文档中为文字添加拼音的方法,希望对大家有所帮助.具体如下:1. 首先,请大家在自己的电脑中找到wps Word,点击进入主界面,然后在其中新建一个新文档,或者可以直接打开目标文档即可.2. 第二步,接下来,请大家在文中输入内容,然后将需要添加拼音的文字选中即可.3. 第三步,如图所示,我们需要选择箭头所指的[文]图标按钮.4. 第四步,此时我们已经来到了[拼音设置]页面,其中左下方为[预览],左侧是[拼音对比],当我们确认无误后,请选择[确认]按钮即可.5.第...

    其他

    2019/04/01

    如何给Word2007文字添加拼音

    如何给Word2007文字添加拼音      如何给Word2007文字添加拼音 第一步:首先打开word文档,然后输入或者复制这个字到文档空白处(只要是中华字典库里面的字体都可以),如图 第二步:然后选中这个字,接着点击工具栏"开始"下字体上面的"文",然后会弹出"拼音指南"对话框 第三步:可以不用在该对话框下做任何设置,然后直接点击"确定",然后就看到了文字的上面有了拼音 第四步:如果感觉添加的拼音字体太小或者拼音和文字之间的距离等结构不够美观,那么我们同时...

    word

    2016/11/22

    Word文档中汉字怎么添加拼音标注

    Word文档中汉字怎么添加拼音标注 Word文档中汉字怎么添加拼音标注 补充说明:在开始添加拼音之前,电脑中必须安装了微软拼音,否则你的电脑可能会没法识别的. 下面是一首李白的静夜思,本文就利用这个案例学习一下怎么为文字添加拼. 1.选中需要添加拼音的文字,切换到"开始"选项卡,在"字体"组中单击"拼音指南"按钮. 2.此时会弹出一个"拼音指南"对话框,所有默认的选项如下,大家如果不需要更改这些选项,直接单击"确定"按钮就可以得到如预览所示的...

    word

    2016/12/03

    Excel2007如何为单元格中的文字添加拼音?

    Excel2007如何为单元格中的文字添加拼音? 很多人以为就word可以在汉字上方添加拼音,其实不然,excel中也可以,万万没想到吧,那么Excel2007如何为单元格中的文字添加拼音?下面小编就为大家详细介绍一下,来看看吧! 方法/步骤 1.启动excel2007程序,新建一张空白表格,今天要探讨如何给文字注音问题. 2.为了给拼音腾出空间,先设置一下表格的行高和列宽.右击第一行行号,选择行高,输入30,确定. 3.同样的,右击A列列号,选择列宽,输入20,单击确定.这样行高.列宽就设置好了. 4.把字号调整为12磅,输入“金笔小六”四个...

    其他

    2016/02/03

    如何在Word文档中添加拼音标注 Word中怎么插入横向拼音

    如何在Word文档中添加拼音标注 Word中怎么插入横向拼音 今天,小编给大家分享在Word文档中添加拼音标注的方法,希望对大家有所帮助.具体如下:1. 首先,请大家在自己的电脑中找到"word"软件,点击进入主界面,然后在其中打开目标文档,接着输入文字,完成后请选择屏幕中字体一栏的加拼音即可.2. 第二步,我们来到如图所示的新界面,请选择其中的[确定]选项.3.第三步,如图所示,我们的文字已经成功加上了拼音,有的朋友横向加拼音,请大家选中文字,然后进行复制.4. 第四步,我们来到如图所示的新界面,请大家复制这个加拼音的文字内容,只需右击然后选择...

    其他

    2019/03/09

    如何给word文档中的文字添加拼音

    如何给word文档中的文字添加拼音 方法/步骤 首先,打开word文档,然后输入或者复制这个字到文档空白处,如图 然后选中这个字,接着点击工具栏"开始"下字体上面的"文",然后会弹出"拼音指南"对话框 我们可以不用在该对话框下做任何设置,然后直接点击"确定",然后就看到了文字的上面有了拼音 如果感觉添加的拼音字体太小或者拼音和文字之间的距离等结构不够美观,那么我们同时选择文字和拼音,依旧点击刚才的"文",就可以调整字体大小.字号以及两者之间的...

    word

    2016/07/26

    ppt中怎么制作给田字格里的文字添加拼音的动画?

    ppt中怎么制作给田字格里的文字添加拼音的动画? 语文上新课,课件中常常需要为生字添加拼音.这其中又常会遇到两个问题:声调的标注,拼音a.g正确的.非英文形式的写法.怎样解决呢.跟我来看看吧.涉及田字格的制作.字号的更改.拼音的三种添加方法. 一.绘制一个田字格 1.视图菜单里打开网格线.插入——形状——矩形.按住shift键拉出一个正方形. 2.右键——点开填充下拉箭头——无填充颜色. 3.直线工具,按住shift键,画出田字格的横线. 4.右键——设置形状格式——线型,宽度2磅,短划线类型选短划线.线条颜色选深蓝. 5.复制横线,格式工具栏...

    其他

    2016/06/30

    用WPS文字隐藏文字添加拼音 制作语文考卷不用愁

    用WPS文字隐藏文字添加拼音 制作语文考卷不用愁 小编将通过WPS文字在制作语文考卷时的实际运用,来为大家介绍如何在WPS文字中隐藏文字和添加拼音。 1、隐藏文字 在作业与测试中,经常需要学生们填空,有时没有标准答案,可以随意填写,批改作业与试卷时也可以灵活操作。而有时必须填写标准答案,这在批改作业与试卷时就不可随意了,要与标准答案比对评判,我们手上就需要有一份带标准答案的底稿了。 方法一:其实制作过程也挺简单,就是在试卷制作时,先按正常操作执行,制作完成后,将答案部分隐藏起来就行了,先用左手按下Ctlr键,再用鼠标依次选择我们...

    wps

    2013/04/23

    WPS文字隐藏文字添加拼音 制作语文考卷不用愁

    WPS文字隐藏文字添加拼音 制作语文考卷不用愁 小编将通过WPS文字在制作语文考卷时的实际运用,来为大家介绍如何在WPS文字中隐藏文字和添加拼音。 1、隐藏文字 在作业与测试中,经常需要学生们填空,有时没有标准答案,可以随意填写,批改作业与试卷时也可以灵活操作。而有时必须填写标准答案,这在批改作业与试卷时就不可随意了,要与标准答案比对评判,我们手上就需要有一份带标准答案的底稿了。 方法一: 其实制作过程也挺简单,就是在试卷制作时,先按正常操作执行,制作完成后,将答案部分隐藏起来就行了,先用左手按下Ctlr键,再用鼠标依次选择我们要隐藏的答案部...

    wps

    2015/01/31

    word文字加拼音后怎么调格式

    word文字加拼音后怎么调格式 在word文档中给文字加上拼音一般有两种现象,一是工作学习需要,二是不认识这个字!给文字加拼音相信不少人都学会了,那加完拼音之后要如何调整格式呢? 选中要加拼音的部分,点击工具栏里的拼音功能 在拼音指南里,我们可以设置拼音的对齐方式,偏移量,字体,字号等 确定之后,拼音就设置好了 这时候我们按照原本设置格式的方式修改即可,大小.字体等,拼音是不受影响的...

    其他

    2017/05/28

    wps文章中的文字怎么添加拼音标注?

    wps文章中的文字怎么添加拼音标注? wps文字怎么添加拼音的标注?下面我们就来看看详细的教程, 1.首先我们要选中我们需要标注拼音的文字. 2.点击“wps文字(倒三角)”-“格式”-“中文版式”-“拼音指南” 3.在拼音指南中我们可以对拼音的“对齐方式”.“字体”.“字号”和“偏移量”进行设置.如果没有特殊要求,一般取默认值即可. 4.单击“拼音指南”下方的确定即可. 5.拼音标注的效果. 6.取消标注好的拼音的方法则是,选中已经标注好的拼音文字. 7.点击“wps文字(倒三角)”-“格式”-“中文版式”-“拼音指南” 8.在“...

    其他

    2017/03/12

    word怎么设置文字倒影效果? word文字添加倒影的教程

    word怎么设置文字倒影效果? word文字添加倒影的教程 在制作文档时,有时候我们需要特殊的文字效果来增强文档的趣味性,给读者耳目一新的感觉,今天小编给大家讲解word如何制作文字倒影效果. 1.打开一篇文档,选中想要制作倒影效果的文字.如图所示: 2.右键点击选中的文字,在弹出菜单中选择”字体“并点击它.如图所示: 3.在弹出的对话框中,点击最下面的”文字效果“.如图所示: 4.在”设置文本效果格式“对话框中,点击”效果“.如图所示: 5.在”倒影“效果中,设置倒影变体的样式(全倒影)后,系统就会自动设置合适的大小.透明度.模糊度和距离的参数.如图所...

    其他

    2016/11/15

    word中怎么给文字添加边框? word文字添加边框的教程

    word中怎么给文字添加边框? word文字添加边框的教程 我们在写文档的时候,如果有一段文字是用来做总结的,或者特别重要的,我们想给这段文字加上边框,醒目显示,应该怎样操作呢?下面举例说明. 1.打开WORD软件 2.我们随便输入什么字符 3.选中需要加边框的字符 4.鼠标上移到功能区,选择字符边框,如图 5.单击这按钮,得到效果 特别说明: 1.如果在插入边框后还想在紧挨边框位置插入字符的,又不想要边框记得在点击下字符边框按钮,否则,新加入的字符也会包含在边框里 2.点击后就不会有了...

    其他

    2016/12/24

    20个Word文字处理技巧的详细介绍

    20个Word文字处理技巧的详细介绍 1. 去除页眉的横线方法两则在页眉插入信息的时候经常会在下面出现一条横线,如果这条横线影响你的视觉,这时你可以采用下述的两种方法去掉:用第一种的朋友比较多,即选中页眉的内容后,选取“格式”选项,选取“边框和底纹”,边框设置选项设为“无”,“应用于”处选择“段落”,确定即可。 第二种方法更为简单,当设定好页眉的文字后,鼠标移向“样式”框,在“字体选择”框左边,把样式改为“页脚”、“正文样式”或“清除格式”,便可轻松搞定。 2. 在Word中快速选择字体为了能够快速地选择字体,我们可...

    word

    2013/05/15

    如何给word文档加密?给word文档加密的详细步骤

    如何给word文档加密?给word文档加密的详细步骤 在编辑一些非常重要的Word文档时,特别是一些机密的文档,给Word文档加上密码是一项非常有用的功能,也是一项安全的保障。为了防止他人看见内容,我们必须给Word文档加上密码。给Word文档加密后任何人必须输入正确的密码后才可以查看内容。 下面分享给word文档加密的方法,分别介绍word2003和word2007的方法。 word2003文档加密方法在Word2003中单击菜单栏上的【工具】 选择【选项】打开,会弹出一个对话框。 在弹出的对话框中选择【安全性】点击。 打开后找【此文档的文件加密...

    word

    2013/03/06

    windows8系统怎么添加网络打印机详细步骤图解

    windows8系统怎么添加网络打印机详细步骤图解 首先,在浏览器通过打印机IP查看打印机是否连线: 为保证能够顺利安装网络打印机,有必要先取消防火墙: 然后再在WIN8桌面下按WIN+X组合键,选择“控制面板”: 在弹出的窗口中单击“查看设备和打印机”链接: 再单击最顶部的“添加打印机”按钮: 在弹出的添加打印机”对话框第一个步骤中,选择“以管理员身份添加本地或网络打印机”: 然后再点击“添加本地打印机”: 在弹出的窗口中,选择“创建新端口”,再选择“端口类型”为“Standard TCP/IP Port”,点击“下一上”按钮即可: 在弹出的窗...

    windows8

    2013/06/09

    添加网络打印机详细步骤

    添加网络打印机详细步骤 如何添加网络打印机?首先在“开始”菜单中“设置”中点“打印机和传真”,打开菜单,左上角有个“添加打印机”,选中,出现“打印机向导”单击下一步,然后选择:网络打印机或连接到另一台计算机的打印机,单击下一步,点浏览打印机,选择对方的打印机,或直接输入对方打印机位置及型号,然后下一步,完成就可以了。这样就可以使用打印服务器将无网络接口的打印设置为真正的网络打印机。 解决方法与步骤: 步骤一: 配置打印服务器,给打印机分配IP 1.第一次使用或更改IP时需要在同网段内任一台电脑中安装打印服务器设置程序。...

    打印机

    2013/10/17

    展开全文
  • excel提取文字拼音首字母

    千次阅读 2021-02-02 10:36:10
    在工作中,为了方便查询、排序或者编码,需要生成汉字内容信息的首字母,如果信息很多的话,一个个录入是一件很麻烦的事情,下面给大家介绍一个便捷的方法,轻松获取汉字拼音首字母信息。 最终效果如下: 工具/...
  • JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容,效果查看:http://blog.csdn.net/testcs_dn/article/details/25116655
  • 有关win8系统取消电脑文件显示以字母数字拼音分组的操作方法想必大家有所耳闻。但是能够对win8系统取消电脑文件显示以字母数字拼音分组进行实际操作的人却不多。其实解决win8系统取消电脑文件显示以字母数字拼音分组...
  • 本发明涉及信息技术领域,尤其涉及一种汉字与拼音转换,精确识别多音的多音汉字转拼音全拼的方法。背景技术:随着中国综合国力的逐渐增强,汉字在国际上的应用场景越来越多,汉字的学习热情空前高涨。在汉字学习...
  • HTML中文携带拼音的方法 在HTML中有专门的拼音文本来实现在文字上显示拼音的功能。 也就是<ruby>和<rt>标签对应使用来实现。 <ruby><span>你</span><rt>ni</rt></...
  • 与《用WPS表格快速制作拼音格的方法》相关的范文word中如何制作田格, 浏览次数:1118次悬赏分:0 | 解决时间:2010-11-26 10:17 | 提问者:yijianmeitt 能打字的,或者可以将汉字导入的 最佳答案 制作田格最常用...
  • 基于的二元模型拼音输入 挖坑,大作业ddl前一定填
  • 拼音打字考试标准练习题200

    千次阅读 2021-08-03 02:41:32
    拼音打字考试标准练习题200字拼音打字考试标准练习题200字1、输入下列文字:人参是名贵的药用植物,为人所知至少已有4000年的历史。是中药六宝,可治因体弱引起的一切疾病,能起死回生,延缓死亡。它的神效主要在于...
  • 大家好,我是钱力强,微软拼音输入法的软件工程师。...(shǎn)由于微软拼音输入法数据中没有这个读音,所以没有办法用拼音”shan”来输入这个。但是,如果我们知道这个的Unicode,还是可以直...
  • 其实也就是建立一个多音字词库,把预知范围的多音字写到词库里面,进行转换的时候回去多音字词库进行查找,就会得到我们需要的正确的多音字拼音。 注意事项 多音字词库,需要结合自身的业务需求来进行完善,以下实例...
  • 既然这个需求这么火,于是开始学习相关内容,此篇文章是我通过参考网上资料独立编写和总结的,希望多多少少对大家有所帮助,写的不好,还请各位朋友指教。 效果图如下: 实现这个效果,需要三个知识点 : 1:将字符...
  • 本文实例为大家分享了Python3实现汉语转换为汉语拼音的具体代码,供大家参考,具体内容如下 工具: Python3.6.2,pycharm 1.使用了 第三方模块 pypinyin(点击File->setting…->Project:name(自己的项目名称)->Project ...
  • 作者:小伍哥来源:AI入门学习一、应用概述最近做一个项目,发现很多场景,把汉字转换成拼音,然后进行深度学习分类,能够取得非常不错的效果,在做内容识别,特别是涉及到同音的时候,转换成拼音就显得特别重要。...
  • 把第1列前299行的内容转换为拼音字母序列,放入第2列对应的行;都能识别;全部代码可以查看(工作表名称、右键、查看代码)
  • 今天工作遇到一个需求,其中有一列的需求是将姓名转变为拼音全称 这个需求有两种解决办法(目前) 直接进入正题: ...在右边的空白栏中粘贴以下内容: 我的是在这个位置,每个人或每个版本excel的布局都
  • Word文档怎么添加拼音给文字注音

    千次阅读 2020-12-24 04:10:44
    在文档中我们有时需要对个别难读的注音让人明白,或者在小学课堂中,常常需要对文章注音帮助阅读,那么在word中怎么完成这个功能呢?Word文档怎么添加拼音?1、打开Word文档。2、在该界面内输入我们需要的文字,并将...
  • java实现第三届蓝桥杯拼音字母

    万次阅读 多人点赞 2019-07-29 20:25:10
    拼音字母 在很多软件中,输入拼音的首写字母就可以快速定位到某个词条。比如,在铁路售票软件中,输入: “bj”就可以定位到“北京”。怎样在自己的软件中实现这个功能呢?问题的关键在于:对每个汉字必须能计算出它...
  • 后来我就想着把汉字转成拼音,再根据拼音进行排序。汉字转拼音可以根据此链接https://www.cnblogs.com/kinnjee/p/4160060.html自行转换。汉字转换为拼音之后则需要将其按字母分类,代码如下: import PY from '../....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,978
精华内容 17,591
关键字:

内容字的拼音

友情链接: vusbbus.zip