700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Qt知识点梳理 —— 实现汉字转拼音全拼简拼及首字母

Qt知识点梳理 —— 实现汉字转拼音全拼简拼及首字母

时间:2021-07-02 03:41:41

相关推荐

Qt知识点梳理 —— 实现汉字转拼音全拼简拼及首字母

需求功能

输入一句汉语,转换成拼音全拼、简拼、每个字首字母及整句话首字母;

封装成单独的类,供后续使用方便;

运行效果

系统实现

汉语转拼音:

//汉语转拼音QString CNLHelper::CNToPY(const QString &cnstr){QStringList list;for (int i = 0; i < cnstr.length(); ++i) {int unicode = QString::number(cnstr.at(i).unicode(), 10).toInt();if (unicode >= 0x4E00 && unicode <= 0x9FA5) {//这里的listPY就是按照UNICODE每个中文对应的拼音数组list.append(listPY.at(unicode - 0x4E00));} else {list.append(cnstr.at(i));}}return list.join(" ");}

转简拼:

//汉语转所有字首字母QString CNLHelper::CNToEL(const QString &cnstr){QString strChineseFirstPY = listJP.join("");if(cnstr.length() == 0) {return cnstr;}QString str;int index = 0;for(int i = 0; i < cnstr.length(); i++) {//若是字母或数字则直接输出ushort vChar = cnstr.at(i).unicode() ;if((vChar >= 'a' && vChar <= 'z' ) || (vChar >= 'A' && vChar <= 'Z')) {str.append(cnstr.at(i).toUpper());}if((vChar >= '0' && vChar <= '9')) {str.append(cnstr.at(i));} else {index = (int)vChar - 19968;if(index >= 0 && index < strChineseFirstPY.length()) {str.append(strChineseFirstPY.at(index));}}}return str;}

汉语转第一个汉字首字母:

//汉语转第一个汉字首字母QString CNLHelper::CNToFL(const QString &cnstr){return CNToEL(cnstr.mid(0,1));//取第一个汉字 并计算首字母}

加入资源文件 “ cnl.txt ”:

项目源码

Github:lizhifun / QtCNLetter

Github 汉字拼音数据项目:mozillazg/pinyin-data

开发环境

Author:Lizhifun

OS:Windows 10 家庭中文版

Compiler:Microsoft Visual C++ Compiler 15.9.28307.1259(amd64)

Kit:Desktop Qt 5.14.2 MSVC 64bit

Qt Creator:4.11.1

参考文章:/bbs/read-htm-tid-65502.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。