Delphi汉字转拼音全拼

该博客介绍了如何利用Delphi编写一个汉字转拼音的函数,通过获取汉字的Unicode编码并匹配预定义的拼音映射表来实现全拼转换。这种方法适用于VBA和只转换首字母的限制,为开发者提供了一种在Delphi环境下处理汉字拼音的解决方案。

查询了很多网上汉字转拼音的方案,一种是用VBA实现的,另一种是只能转汉字首字母,结合VBA的方式,用Delphi实现汉字转拼音全拼的方法。附Delphi7写的例程链接

Delphi实现汉字转拼音全拼的方法-外包文档类资源-优快云下载

function TForm1.py(s: string): string;
var
  ascH, ascL,strAsc: Integer;
  pinyin:string;
begin
  if length(s) = 2 then
  begin
    ascH := ord(s[1]); // s字符取高位和低位的整数
    ascL := ord(s[2]);
    strAsc:= ascH * 256 + ascL - 65536;
  end;

  case strAsc of
      -20319 .. -20318: pinyin := 'a';
    -20317 .. -20305: pinyin := 'ai';
    -20304 .. -20296: pinyin := 'an';
    -20295 .. -20293: pinyin := 'ang';
    -20292 .. -20284: pinyin := 'ao';
    -20283 .. -20266: pinyin := 'ba';
    -20265 .. -20258: pinyin := 'bai';
    -20257 .. -20243: pinyin := 'ban';
    -20242 .. -20231: pinyin := 'bang';
    -20230 .. -20052: pinyin := 'bao';
    -20051 .. -20037: pinyin := 'bei';
    -20036 .. -20033: pinyin := 'ben';
    -20032 .. -20027: pinyin := 'beng';
    -20026 .. -20003: pinyin := 'bi';
    -20002 .. -19991: pinyin := 'bian';
    -19990 .. -19987: pinyin := 'biao';
    -19986 .. -19983: pinyin := 'bie';
    -19982 .. -19977: pinyin := 'bin';
    -19976 .. -19806: pinyin := 'bing';
    -19805 .. -19785: pinyin := 'bo';
    -19784 .. -19776: pinyin := 'bu';
    -19775 .. -19775: pinyin := 'ca';
    -19774 .. -19764: pinyin := 'cai';
    -19763 .. -19757: pinyin := 'can';
    -19756 .. -19752: pinyin := 'cang';
    -19751 .. -19747: pinyin := 'cao';
    -19746 .. -19742: pinyin := 'ce';
    -19741 .. -19740: pinyin := 'ceng';
    -19739 .. -19729: pinyin := 'cha';
    -19728 .. -19726: pinyin := 'chai';
    -19725 .. -19716: pinyin := 'chan';
    -19715 .. -19541: pinyin := 'chang';
    -19540 .. -19532: pinyin := 'chao';
    -19531 .. -19526: pinyin := 'che';
    -19525 .. -19516: pinyin := 'chen';
    -19515 .. -19501: pinyin := 'cheng';
    -19500 .. -19485: pinyin := 'chi';
    -19484 .. -19480: pinyin := 'chong';
    -19479 .. -19468: pinyin := 'chou';
    -19467 .. -19290: pinyin := 'chu';
    -19289 .. -19289: pinyin := 'chuai';
    -19288 .. -19282: pinyin := 'chuan';
    -19281 .. -19276: pinyin := 'chuang';
    -19275 .. -19271: pinyin := 'chui';
    -19270 .. -19264: pinyin := 'chun';
    -19263 .. -19262: pinyin := 'chuo';
    -19261 .. -19250: pinyin := 'ci';
    -19249 .. -19244: pinyin := 'cong';
    -19243 .. -19243: pinyin := 'cou';
    -19242 .. -19239: pinyin := 'cu';
    -19238 .. -19236: pinyin := 'cuan';
    -19235 .. -19228: pinyin := 'cui';
    -19227 .. -19225: pinyin := 'cun';
    -19224 .. -19219: pinyin := 'cuo';
    -19218 .. -19213: pinyin := 'da';
    -19212 .. -19039: pinyin := 'dai';
    -19038 .. -19024: pinyin := 'dan';
    -19023 .. -19019: pinyin := 'dang';
    -19018 .. -19007: pinyin := 'dao';
    -19006 .. -19004: pinyin := 'de';
    -19003 .. -18997: pinyin := 'deng';
    -18996 .. -18978: pinyin := 'di';
    -18977 .. -18962: pinyin := 'dian';
    -18961 .. -18953: pinyin := 'diao';
    -18952 .. -18784: pinyin := 'die';
    -18783 .. -18775: pinyin := 'ding';
    -18774 .. -18774: pinyin := 'diu';
    -18773 .. -18527: pinyin := 'dong';
    -18526 .. -18519: pinyin := 'fa';
    -18518 .. -18502: pinyin := 'fan';
    -18501 .. -18491: pinyin := 'fang';
    -18490 .. -18479: pinyin := 'fei';
    -18478 .. -18464: pinyin := 'fen';
    -18463 .. -18449: pinyin := 'feng';
    -18448 .. -18448: pinyin := 'fo';
    -18447 .. -18447: pinyin := 'fou';
    -18446 .. -18240: pinyin := 'fu';
    -18239 .. -18238: pinyin := 'ga';
    -18237 .. -18232: pinyin := 'gai';
    -18231 .. -18221: pinyin := 'gan';
    -18220 .. -18212: pinyin := 'gang';
    -18211 .. -18202: pinyin := 'gao';
    -18201 .. -18185: pinyin := 'ge';
    -18184 .. -18184: pinyin := 'gei';
    -18183 .. -18182: pinyin := 'gen';
    -18181 .. -18013: pinyin := 'geng';
    -18012 .. -17998: pinyin := 'gong';
    -17997 .. -17989: pinyin := 'gou';
    -17988 .. -17971: pinyin := 'gu';
    -17970 .. -17965: pinyin := 'gua';
    -17964 .. -17962: pinyin := 'guai';
    -17961 .. -17951: pinyin := 'guan';
    -17950 .. -17948: pinyin := 'guang';
    -17947 .. -17932: pinyin := 'gui';
    -17931 .. -17929: pinyin := 'gun';
    -17928 .. -17923: pinyin := 'guo';
    -17922 .. -17760: pinyin := 'ha';
    -17759 .. -17753: pinyin := 'hai';
    -17752 .. -17734: pinyin := 'han';
    -17733 .. -17731: pinyin := 'hang';
    -17730 .. -17722: pinyin := 'hao';
    -17721 .. -17704: pinyin := 'he';
    -17703 .. -17702: pinyin := 'hei';
    -17701 .. -17698: pinyin := 'hen';
    -17697 .. -17693: pinyin := 'heng';
    -17692 .. -17684: pinyin := 'hong';
    -17683 .. -17677: pinyin := 'hou';
    -17676 .. -17497: pinyin := 'hu';
    -17496 .. -17488: pinyin := 'hua';
    -17487 .. -17483: pinyin := 'huai';
    -17482 .. -17469: pinyin := 'huan';
    -17468 .. -17455: pinyin := 'huang';
    -17454 .. -17434: pinyin := 'hui';
    -17433 .. -17428: pinyin := 'hun';
    -17427 .. -17418: pinyin := 'huo';
    -17417 .. -17203: pinyin := 'ji';
    -17202 .. -17186: pinyin := 'jia';
    -17185 .. -16984: pinyin := 'jian';
    -16983 .. -16971: pinyin := 'jiang';
    -16970 .. -16943: pinyin := 'jiao';
    -16942 .. -16916: pinyin := 'jie';
    -16915 .. -16734: pinyin := 'jin';
    -16733 .. -16709: pinyin := 'jing';
    -16708 .. -16707: pinyin := 'jiong';
    -16706 .. -16690: pinyin := 'jiu';
    -16689 .. -16665: pinyin := 'ju';
    -16664 .. -16658: pinyin := 'juan';
    -16657 .. -16648: pinyin := 'jue';
    -16647 .. -16475: pinyin := 'jun';
    -16474 .. -16471: pinyin := 'ka';
    -16470 .. -16466: pinyin := 'kai';
    -16465 .. -16460: pinyin := 'kan';
    -16459 .. -16453: pinyin := 'kang';
    -16452 .. -16449: pinyin := 'kao';
    -16448 .. -16434: pinyin := 'ke';
    -16433 .. -16430: pinyin := 'ken';
    -16429 .. -16428: pinyin := 'keng';
    -16427 .. -16424: pinyin := 'kong';
    -16423 .. -16420: pinyin := 'kou';
    -16419 .. -16413: pinyin := 'ku';
    -16412 .. -16408: pinyin := 'kua';
    -16407 .. -16404: pinyin := 'kuai';
    -16403 .. -16402: pinyin := 'kuan';
    -16401 .. -16394: pinyin := 'kuang';
    -16393 .. -16221: pinyin := 'kui';
    -16220 .. -16217: pinyin := 'kun';
    -16216 .. -16213: pinyin := 'kuo';
    -16212 .. -16206: pinyin := 'la';
    -16205 .. -16203: pinyin := 'lai';
    -16202 .. -16188: pinyin := 'lan';
    -16187 .. -16181: pinyin := 'lang';
    -16180 .. -16172: pinyin := 'lao';
    -16171 .. -16170: pinyin := 'le';
    -16169 .. -16159: pinyin := 'lei';
    -16158 .. -16156: pinyin := 'leng';
    -16155 .. -15960: pinyin := 'li';
    -15959 .. -15959: pinyin := 'lia';
    -15958 .. -15945: pinyin := 'lian';
    -15944 .. -15934: pinyin := 'liang';
    -15933 .. -15921: pinyin := 'liao';
    -15920 .. -15916: pinyin := 'lie';
    -15915 .. -15904: pinyin := 'lin';
    -15903 .. -15890: pinyin := 'ling';
    -15889 .. -15879: pinyin := 'liu';
    -15878 .. -15708: pinyin := 'long';
    -15707 .. -15702: pinyin := 'lou';
    -15701 .. -15682: pinyin := 'lu';
    -15681 .. -15668: pinyin := 'lv';
    -15667 .. -15662: pinyin := 'luan';
    -15661 .. -15660: pinyin := 'lue';
    -15659 .. -15653: pinyin := 'lun';
    -15652 .. -15641: pinyin := 'luo';
    -15640 .. -15632: pinyin := 'ma';
    -15631 .. -15626: pinyin := 'mai';
    -15625 .. -15455: pinyin := 'man';
    -15454 .. -15449: pinyin := 'mang';
    -15448 .. -15437: pinyin := 'mao';
    -15436 .. -15436: pinyin := 'me';
    -15435 .. -15420: pinyin := 'mei';
    -15419 .. -15417: pinyin := 'men';
    -15416 .. -15409: pinyin := 'meng';
    -15408 .. -15395: pinyin := 'mi';
    -15394 .. -15386: pinyin := 'mian';
    -15385 .. -15378: pinyin := 'miao';
    -15377 .. -15376: pinyin := 'mie';
    -15375 .. -15370: pinyin := 'min';
    -15369 .. -15364: pinyin := 'ming';
    -15363 .. -15363: pinyin := 'miu';
    -15362 .. -15184: pinyin := 'mo';
    -15183 .. -15181: pinyin := 'mou';
    -15180 .. -15166: pinyin := 'mu';
    -15165 .. -15159: pinyin := 'na';
    -15158 .. -15154: pinyin := 'nai';
    -15153 .. -15151: pinyin := 'nan';
    -15150 .. -15150: pinyin := 'nang';
    -15149 .. -15145: pinyin := 'nao';
    -15144 .. -15144: pinyin := 'ne';
    -15143 .. -15142: pinyin := 'nei';
    -15141 .. -15141: pinyin := 'nen';
    -15140 .. -15140: pinyin := 'neng';
    -15139 .. -15129: pinyin := 'ni';
    -15128 .. -15122: pinyin := 'nian';
    -15121 .. -15120: pinyin := 'niang';
    -15119 .. -15118: pinyin := 'niao';
    -15117 .. -15111: pinyin := 'nie';
    -15110 .. -15110: pinyin := 'nin';
    -15109 .. -14942: pinyin := 'ning';
    -14941 .. -14938: pinyin := 'niu';
    -14937 .. -14934: pinyin := 'nong';
    -14933 .. -14931: pinyin := 'nu';
    -14930 .. -14930: pinyin := 'nv';
    -14929 .. -14929: pinyin := 'nuan';
    -14928 .. -14927: pinyin := 'nue';
    -14926 .. -14923: pinyin := 'nuo';
    -14922 .. -14922: pinyin := 'o';
    -14921 .. -14915: pinyin := 'ou';
    -14914 .. -14909: pinyin := 'pa';
    -14908 .. -14903: pinyin := 'pai';
    -14902 .. -14895: pinyin := 'pan';
    -14894 .. -14890: pinyin := 'pang';
    -14889 .. -14883: pinyin := 'pao';
    -14882 .. -14874: pinyin := 'pei';
    -14873 .. -14872: pinyin := 'pen';
    -14871 .. -14858: pinyin := 'peng';
    -14857 .. -14679: pinyin := 'pi';
    -14678 .. -14675: pinyin := 'pian';
    -14674 .. -14671: pinyin := 'piao';
    -14670 .. -14669: pinyin := 'pie';
    -14668 .. -14664: pinyin := 'pin';
    -14663 .. -14655: pinyin := 'ping';
    -14654 .. -14646: pinyin := 'po';
    -14645 .. -14631: pinyin := 'pu';
    -14630 .. -14595: pinyin := 'qi';
    -14594 .. -14430: pinyin := 'qia';
    -14429 .. -14408: pinyin := 'qian';
    -14407 .. -14400: pinyin := 'qiang';
    -14399 .. -14385: pinyin := 'qiao';
    -14384 .. -14380: pinyin := 'qie';
    -14379 .. -14369: pinyin := 'qin';
    -14368 .. -14356: pinyin := 'qing';
    -14355 .. -14354: pinyin := 'qiong';
    -14353 .. -14346: pinyin := 'qiu';
    -14345 .. -14171: pinyin := 'qu';
    -14170 .. -14160: pinyin := 'quan';
    -14159 .. -14152: pinyin := 'que';
    -14151 .. -14150: pinyin := 'qun';
    -14149 .. -14146: pinyin := 'ran';
    -14145 .. -14141: pinyin := 'rang';
    -14140 .. -14138: pinyin := 'rao';
    -14137 .. -14136: pinyin := 're';
    -14135 .. -14126: pinyin := 'ren';
    -14125 .. -14124: pinyin := 'reng';
    -14123 .. -14123: pinyin := 'ri';
    -14122 .. -14113: pinyin := 'rong';
    -14112 .. -14110: pinyin := 'rou';
    -14109 .. -14100: pinyin := 'ru';
    -14099 .. -14098: pinyin := 'ruan';
    -14097 .. -14095: pinyin := 'rui';
    -14094 .. -14093: pinyin := 'run';
    -14092 .. -14091: pinyin := 'ruo';
    -14090 .. -14088: pinyin := 'sa';
    -14087 .. -14084: pinyin := 'sai';
    -14083 .. -13918: pinyin := 'san';
    -13917 .. -13915: pinyin := 'sang';
    -13914 .. -13911: pinyin := 'sao';
    -13910 .. -13908: pinyin := 'se';
    -13907 .. -13907: pinyin := 'sen';
    -13906 .. -13906: pinyin := 'seng';
    -13905 .. -13897: pinyin := 'sha';
    -13896 .. -13895: pinyin := 'shai';
    -13894 .. -13879: pinyin := 'shan';
    -13878 .. -13871: pinyin := 'shang';
    -13870 .. -13860: pinyin := 'shao';
    -13859 .. -13848: pinyin := 'she';
    -13847 .. -13832: pinyin := 'shen';
    -13831 .. -13659: pinyin := 'sheng';
    -13658 .. -13612: pinyin := 'shi';
    -13611 .. -13602: pinyin := 'shou';
    -13601 .. -13407: pinyin := 'shu';
    -13406 .. -13405: pinyin := 'shua';
    -13404 .. -13401: pinyin := 'shuai';
    -13400 .. -13399: pinyin := 'shuan';
    -13398 .. -13396: pinyin := 'shuang';
    -13395 .. -13392: pinyin := 'shui';
    -13391 .. -13388: pinyin := 'shun';
    -13387 .. -13384: pinyin := 'shuo';
    -13383 .. -13368: pinyin := 'si';
    -13367 .. -13360: pinyin := 'song';
    -13359 .. -13357: pinyin := 'sou';
    -13356 .. -13344: pinyin := 'su';
    -13343 .. -13341: pinyin := 'suan';
    -13340 .. -13330: pinyin := 'sui';
    -13329 .. -13327: pinyin := 'sun';
    -13326 .. -13319: pinyin := 'suo';
    -13318 .. -13148: pinyin := 'ta';
    -13147 .. -13139: pinyin := 'tai';
    -13138 .. -13121: pinyin := 'tan';
    -13120 .. -13108: pinyin := 'tang';
    -13107 .. -13097: pinyin := 'tao';
    -13096 .. -13096: pinyin := 'te';
    -13095 .. -13092: pinyin := 'teng';
    -13091 .. -13077: pinyin := 'ti';
    -13076 .. -13069: pinyin := 'tian';
    -13068 .. -13064: pinyin := 'tiao';
    -13063 .. -13061: pinyin := 'tie';
    -13060 .. -12889: pinyin := 'ting';
    -12888 .. -12876: pinyin := 'tong';
    -12875 .. -12872: pinyin := 'tou';
    -12871 .. -12861: pinyin := 'tu';
    -12860 .. -12859: pinyin := 'tuan';
    -12858 .. -12853: pinyin := 'tui';
    -12852 .. -12850: pinyin := 'tun';
    -12849 .. -12839: pinyin := 'tuo';
    -12838 .. -12832: pinyin := 'wa';
    -12831 .. -12830: pinyin := 'wai';
    -12829 .. -12813: pinyin := 'wan';
    -12812 .. -12803: pinyin := 'wang';
    -12802 .. -12608: pinyin := 'wei';
    -12607 .. -12598: pinyin := 'wen';
    -12597 .. -12595: pinyin := 'weng';
    -12594 .. -12586: pinyin := 'wo';
    -12585 .. -12557: pinyin := 'wu';
    -12556 .. -12360: pinyin := 'xi';
    -12359 .. -12347: pinyin := 'xia';
    -12346 .. -12321: pinyin := 'xian';
    -12320 .. -12301: pinyin := 'xiang';
    -12300 .. -12121: pinyin := 'xiao';
    -12120 .. -12100: pinyin := 'xie';
    -12099 .. -12090: pinyin := 'xin';
    -12089 .. -12075: pinyin := 'xing' ;
    -12074 .. -12068: pinyin := 'xiong';
    -12067 .. -12059: pinyin := 'xiu';
    -12058 .. -12040: pinyin := 'xu';
    -12039 .. -11868: pinyin := 'xuan';
    -11867 .. -11862: pinyin := 'xue';
    -11861 .. -11848: pinyin := 'xun';
    -11847 .. -11832: pinyin := 'ya';
    -11831 .. -11799: pinyin := 'yan';
    -11798 .. -11782: pinyin := 'yang' ;
    -11781 .. -11605: pinyin := 'yao';
    -11604 .. -11590: pinyin := 'ye' ;
    -11589 .. -11537: pinyin := 'yi' ;
    -11536 .. -11359: pinyin := 'yin' ;
    -11358 .. -11341: pinyin := 'ying';
    -11340 .. -11340: pinyin := 'yo' ;
    -11339 .. -11325: pinyin := 'yong' ;
    -11324 .. -11304: pinyin := 'you' ;
    -11303 .. -11098: pinyin := 'yu' ;
    -11097 .. -11078: pinyin := 'yuan' ;
    -11077 .. -11068: pinyin := 'yue';
    -11067 .. -11056: pinyin := 'yun' ;
    -11055 .. -11053: pinyin := 'za'  ;
    -11052 .. -11046: pinyin := 'zai' ;
    -11045 .. -11042: pinyin := 'zan' ;
    -11041 .. -11039: pinyin := 'zang';
    -11038 .. -11025: pinyin := 'zao' ;
    -11024 .. -11021: pinyin := 'ze'  ;
    -11020 .. -11020: pinyin := 'zei' ;
    -11019 .. -11019: pinyin := 'zen' ;
    -11018 .. -11015: pinyin := 'zeng';
    -11014 .. -10839: pinyin := 'zha' ;
    -10838 .. -10833: pinyin := 'zhai';
    -10832 .. -10816: pinyin := 'zhan' ;
    -10815 .. -10801: pinyin := 'zhang' ;
    -10800 .. -10791: pinyin := 'zhao'  ;
    -10790 .. -10781: pinyin := 'zhe'   ;
    -10780 .. -10765: pinyin := 'zhen'  ;
    -10764 .. -10588: pinyin := 'zheng' ;
    -10587 .. -10545: pinyin := 'zhi'   ;
    -10544 .. -10534: pinyin := 'zhong' ;
    -10533 .. -10520: pinyin := 'zhou'  ;
    -10519 .. -10332: pinyin := 'zhu'   ;
    -10331 .. -10330: pinyin := 'zhua'  ;
    -10329 .. -10329: pinyin := 'zhuai' ;
    -10328 .. -10323: pinyin := 'zhuan' ;
    -10322 .. -10316: pinyin := 'zhuang';
    -10315 .. -10310: pinyin := 'zhui'  ;
    -10309 .. -10308: pinyin := 'zhun'  ;
    -10307 .. -10297: pinyin := 'zhuo'  ;
    -10296 .. -10282: pinyin := 'zi'    ;
    -10281 .. -10275: pinyin := 'zong'  ;
    -10274 .. -10271: pinyin := 'zou'   ;
    -10270 .. -10263: pinyin := 'zu'    ;
    -10262 .. -10261: pinyin := 'zuan'  ;
    -10260 .. -10257: pinyin := 'zui'   ;
    -10256 .. -10255: pinyin := 'zun'   ;
    -10254 .. -10253: pinyin := 'zuo'   ;
  else
    pinyin := s ;
  end;
  result:=pinyin;

end;

采用ord获取汉字高低位整数,通过运算获得汉字Ascii码(十六进制高位F会得到负值),再匹配对应的拼音即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值