1. 程式人生 > >delphi獲取漢字拼音首字母〖各版本通用〗

delphi獲取漢字拼音首字母〖各版本通用〗

因為DELPHI 2009開始支援UNICODE,所以如果使用DELPHI7需要用記事本,批量替換AnsiString為string,AnsiChar為char,就可以完美支援DELPHI 2009以下版本,現在附上的程式碼是預設支援UNICODE的,DELPHI XE4環境測試通過

封裝程式碼:

unit UnitConverionPy;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


  function ChnToPY(Value: AnsiString): AnsiString;


implementation


const
  py: array[216..247] of AnsiString = (
{216}'CJWGNSPGCGNESYPB' + 'TYYZDXYKYGTDJNMJ' + 'QMBSGZSCYJSYYZPG' +
{216}'KBZGYCYWYKGKLJSW' + 'KPJQHYZWDDZLSGMR' + 'YPYWWCCKZNKYDG',
{217}'TTNJJEYKKZYTCJNM' + 'CYLQLYPYQFQRPZSL' + 'WBTGKJFYXJWZLTBN' +
{217}'CXJJJJZXDTTSQZYC' + 'DXXHGCKBPHFFSSYY' + 'BGMXLPBYLLLHLX',
{218}'SPZMYJHSOJNGHDZQ' + 'YKLGJHXGQZHXQGKE' + 'ZZWYSCSCJXYEYXAD' +
{218}'ZPMDSSMZJZQJYZCD' + 'JEWQJBDZBXGZNZCP' + 'WHKXHQKMWFBPBY',
{219}'DTJZZKQHYLYGXFPT' + 'YJYYZPSZLFCHMQSH' + 'GMXXSXJJSDCSBBQB' +
{219}'EFSJYHXWGZKPYLQB' + 'GLDLCCTNMAYDDKSS' + 'NGYCSGXLYZAYBN',
{220}'PTSDKDYLHGYMYLCX' + 'PYCJNDQJWXQXFYYF' + 'JLEJBZRXCCQWQQSB' +
{220}'ZKYMGPLBMJRQCFLN' + 'YMYQMSQYRBCJTHZT' + 'QFRXQHXMJJCJLX',
{221}'QGJMSHZKBSWYEMYL' + 'TXFSYDSGLYCJQXSJ' + 'NQBSCTYHBFTDCYZD' +
{221}'JWYGHQFRXWCKQKXE' + 'BPTLPXJZSRMEBWHJ' + 'LBJSLYYSMDXLCL',
{222}'QKXLHXJRZJMFQHXH' + 'WYWSBHTRXXGLHQHF' + 'NMCYKLDYXZPWLGGS' +
{222}'MTCFPAJJZYLJTYAN' + 'JGBJPLQGDZYQYAXB' + 'KYSECJSZNSLYZH',
{223}'ZXLZCGHPXZHZNYTD' + 'SBCJKDLZAYFMYDLE' + 'BBGQYZKXGLDNDNYS' +
{223}'KJSHDLYXBCGHXYPK' + 'DQMMZNGMMCLGWZSZ' + 'XZJFZNMLZZTHCS',
{224}'YDBDLLSCDDNLKJYK' + 'JSYCJLKOHQASDKNH' + 'CSGANHDAASHTCPLC' +
{224}'PQYBSDMPJLPCJOQL' + 'CDHJJYSPRCHNKNNL' + 'HLYYQYHWZPTCZG',
{225}'WWMZFFJQQQQYXACL' + 'BHKDJXDGMMYDJXZL' + 'LSYGXGKJRYWZWYCL' +
{225}'ZMSSJZLDBYDCPCXY' + 'HLXCHYZJQSQQAGMN' + 'YXPFRKSSBJLYXY',
{226}'SYGLNSCMHCWWMNZJ' + 'JLXXHCHSYD CTXRY' + 'CYXBYHCSMXJSZNPW' +
{226}'GPXXTAYBGAJCXLYS' + 'DCCWZOCWKCCSBNHC' + 'PDYZNFCYYTYCKX',
{227}'KYBSQKKYTQQXFCWC' + 'HCYKELZQBSQYJQCC' + 'LMTHSYWHMKTLKJLY' +
{227}'CXWHEQQHTQHZPQSQ' + 'SCFYMMDMGBWHWLGS' + 'LLYSDLMLXPTHMJ',
{228}'HWLJZYHZJXHTXJLH' + 'XRSWLWZJCBXMHZQX' + 'SDZPMGFCSGLSXYMJ' +
{228}'SHXPJXWMYQKSMYPL' + 'RTHBXFTPMHYXLCHL' + 'HLZYLXGSSSSTCL',
{229}'SLDCLRPBHZHXYYFH' + 'BBGDMYCNQQWLQHJJ' + 'ZYWJZYEJJDHPBLQX' +
{229}'TQKWHLCHQXAGTLXL' + 'JXMSLXHTZKZJECXJ' + 'CJNMFBYCSFYWYB',
{230}'JZGNYSDZSQYRSLJP' + 'CLPWXSDWEJBJCBCN' + 'AYTWGMPABCLYQPCL' +
{230}'ZXSBNMSGGFNZJJBZ' + 'SFZYNDXHPLQKZCZW' + 'ALSBCCJXJYZHWK',
{231}'YPSGXFZFCDKHJGXD' + 'LQFSGDSLQWZKXTMH' + 'SBGZMJZRGLYJBPML' +
{231}'MSXLZJQQHZSJCZYD' + 'JWBMJKLDDPMJEGXY' + 'HYLXHLQYQHKYCW',
{232}'CJMYYXNATJHYCCXZ' + 'PCQLBZWWYTWBQCML' + 'PMYRJCCCXFPZNZZL' +
{232}'JPLXXYZTZLGDLDCK' + 'LYRLZGQTGJHHGJLJ' + 'AXFGFJZSLCFDQZ',
{233}'LCLGJDJCSNCLLJPJ' + 'QDCCLCJXMYZFTSXG' + 'CGSBRZXJQQCTZHGY' +
{233}'QTJQQLZXJYLYLBCY' + 'AMCSTYLPDJBYREGK' + 'JZYZHLYSZQLZNW',
{234}'CZCLLWJQJJJKDGJZ' + 'OLBBZPPGLGHTGZXY' + 'GHZMYCNQSYCYHBHG' +
{234}'XKAMTXYXNBSKYZZG' + 'JZLQJDFCJXDYGJQJ' + 'JPMGWGJJJPKQSB',
{235}'GBMMCJSSCLPQPDXC' + 'DYYKYWCJDDYYGYWR' + 'HJRTGZNYQLDKLJSZ' +
{235}'ZGZQZJGDYKSHPZMT' + 'LCPWNJAFYZDJCNMW' + 'ESCYGLBTZCGMSS',
{236}'LLYXQSXSBSJSBBGG' + 'GHFJLYPMZJNLYYWD' + 'QSHZXTYYWHMCYHYW' +
{236}'DBXBTLMSYYYFSXJC' + 'SDXXLHJHF SXZQHF' + 'ZMZCZTQCXZXRTT',
{237}'DJHNNYZQQMNQDMMG' + 'LYDXMJGDHCDYZBFF' + 'ALLZTDLTFXMXQZDN' +
{237}'GWQDBDCZJDXBZGSQ' + 'QDDJCMBKZFFXMKDM' + 'DSYYSZCMLJDSYN',
{238}'SPRSKMKMPCKLGDBQ' + 'TFZSWTFGGLYPLLJZ' + 'HGJJGYPZLTCSMCNB' +
{238}'TJBQFKTHBYZGKPBB' + 'YMTDSSXTBNPDKLEY' + 'CJNYCDYKZDDHQH',
{239}'SDZSCTARLLTKZLGE' + 'CLLKJLQJAQNBDKKG' + 'HPJTZQKSECSHALQF' +
{239}'MMGJNLYJBBTMLYZX' + 'DCJPLDLPCQDHZYCB' + 'ZSCZBZMSLJFLKR',
{240}'ZJSNFRGJHXPDHYJY' + 'BZGDLJCSEZGXLBLH' + 'YXTWMABCHECMWYJY' +
{240}'ZLLJJYHLGBDJLSLY' + 'GKDZPZXJYYZLWCXS' + 'ZFGWYYDLYHCLJS',
{241}'CMBJHBLYZLYCBLYD' + 'PDQYSXQZBYTDKYYJ' + 'YYCNRJMPDJGKLCLJ' +
{241}'BCTBJDDBBLBLCZQR' + 'PPXJCGLZCSHLTOLJ' + 'NMDDDLNGKAQHQH',
{242}'JHYKHEZNMSHRP QQ' + 'JCHGMFPRXHJGDYCH' + 'GHLYRZQLCYQJNZSQ' +
{242}'TKQJYMSZSWLCFQQQ' + 'XYFGGYPTQWLMCRNF' + 'KKFSYYLQBMQAMM',
{243}'MYXCTPSHCPTXXZZS' + 'MPHPSHMCLMLDQFYQ' + 'XSZYJDJJZZHQPDSZ' +
{243}'GLSTJBCKBXYQZJSG' + 'PSXQZQZRQTBDKYXZ' + 'KHHGFLBCSMDLDG',
{244}'DZDBLZYYCXNNCSYB' + 'ZBFGLZZXSWMSCCMQ' + 'NJQSBDQSJTXXMBLT' +
{244}'XZCLZSHZCXRQJGJY' + 'LXZFJPHYXZQQYDFQ' + 'JJLZZNZJCDGZYG',
{245}'CTXMZYSCTLKPHTXH' + 'TLBJXJLXSCDQXCBB' + 'TJFQZFSLTJBTKQBX' +
{245}'XJJLJCHCZDBZJDCZ' + 'JDCPRNPQCJPFCZLC' + 'LZXBDMXMPHJSGZ',
{246}'GSZZQLYLWTJPFSYA' + 'SMCJBTZYYCWMYTCS' + 'JJLQCQLWZMALBXYF' +
{246}'BPNLSFHTGJWEJJXX' + 'GLLJSTGSHJQLZFKC' + 'GNNDSZFDEQFHBS',
{247}'AQTGYLBXMMYGSZLD' + 'YDQMJJRGBJTKGDHG' + 'KBLQKBDMBYLXWCXY' +
{247}'TTYBKMRTJZXQJBHL' + 'MHMJJZMQASLDCYXY' + 'QDLQCAFYWYXQHZ'
    );


function ChnPy(Value: array of AnsiChar): AnsiChar;
begin
  Result := #0;
  case Byte(Value[0]) of
    176:
      case Byte(Value[1]) of
        161..196: Result := 'A';
        197..254: Result := 'B';
      end; {case}
    177:
      Result := 'B';
    178:
      case Byte(Value[1]) of
        161..192: Result := 'B';
        193..205: Result := 'C';
        206: Result := 'S'; //參
        207..254: Result := 'C';
      end; {case}
    179:
      Result := 'C';
    180:
      case Byte(Value[1]) of
        161..237: Result := 'C';
        238..254: Result := 'D';
      end; {case}
    181:
      Result := 'D';
    182:
      case Byte(Value[1]) of
        161..233: Result := 'D';
        234..254: Result := 'E';
      end; {case}
    183:
      case Byte(Value[1]) of
        161: Result := 'E';
        162..254: Result := 'F';
      end; {case}
    184:
      case Byte(Value[1]) of
        161..192: Result := 'F';
        193..254: Result := 'G';
      end; {case}
    185:
      case Byte(Value[1]) of
        161..253: Result := 'G';
        254: Result := 'H';
      end; {case}
    186:
      Result := 'H';
    187:
      case Byte(Value[1]) of
        161..246: Result := 'H';
        247..254: Result := 'J';
      end; {case}
    188..190:
      Result := 'J';
    191:
      case Byte(Value[1]) of
        161..165: Result := 'J';
        166..254: Result := 'K';
      end; {case}
    192:
      case Byte(Value[1]) of
        161..171: Result := 'K';
        172..254: Result := 'L';
      end; {case}
    193:
      Result := 'L';
    194:
      case Byte(Value[1]) of
        161..231: Result := 'L';
        232..254: Result := 'M';
      end; {case}
    195:
      Result := 'M';
    196:
      case Byte(Value[1]) of
        161..194: Result := 'M';
        195..254: Result := 'N';
      end; {case}
    197:
      case Byte(Value[1]) of
        161..181: Result := 'N';
        182..189: Result := 'O';
        190..254: Result := 'P';
      end; {case}
    198:
      case Byte(Value[1]) of
        161..217: Result := 'P';
        218..254: Result := 'Q';
      end; {case}
    199:
      Result := 'Q';
    200:
      case Byte(Value[1]) of
        161..186: Result := 'Q';
        187..245: Result := 'R';
        246..254: Result := 'S';
      end; {case}
    201..202:
      Result := 'S';
    203:
      case Byte(Value[1]) of
        161..249: Result := 'S';
        250..254: Result := 'T';
      end; {case}
    204:
      Result := 'T';
    205:
      case Byte(Value[1]) of
        161..217: Result := 'T';
        218..254: Result := 'W';
      end; {case}
    206:
      case Byte(Value[1]) of
        161..243: Result := 'W';
        244..254: Result := 'X';
      end; {case}
    207..208:
      Result := 'X';
    209:
      case Byte(Value[1]) of
        161..184: Result := 'X';
        185..254: Result := 'Y';
      end; {case}
    210..211:
      Result := 'Y';
    212:
      case Byte(Value[1]) of
        161..208: Result := 'Y';
        209..254: Result := 'Z';
      end; {case}
    213..215:
      Result := 'Z';
    216..247:
      Result := py[Byte(Value[0])][Byte(Value[1]) - 160];
  end; {case}
end;


function ChnToPY(Value: AnsiString): AnsiString;
var
  I, L: Integer;
  C: array[0..1] of AnsiChar;
  R: AnsiChar;
begin
  Result := '';
  L := Length(Value);
  I := 1;
  while I <= (L - 1) do
    begin
      if Value[I] < #160 then
        begin
          Result := Result + Value[I];
          Inc(I);
        end
      else
        begin
          C[0] := Value[I];
          C[1] := Value[I + 1];
          R := ChnPY(C);
          if r <> #0 then
            Result := Result + R;
          Inc(I, 2);
        end;
    end;
  if I = L then
    Result := Result + Value[L];
end;


end.

呼叫程式碼

edit1.Text := ChnToPY(trim(edit1.Text));

相關推薦

delphi獲取漢字拼音字母版本通用

因為DELPHI 2009開始支援UNICODE,所以如果使用DELPHI7需要用記事本,批量替換AnsiString為string,AnsiChar為char,就可以完美支援DELPHI 2009以下版本,現在附上的程式碼是預設支援UNICODE的,DELPHI XE4環

php獲取漢字拼音字母的方法

emp tool iconv ace utf-8 comment 進行 adding padding 現實中我們經常看到這樣的說明,排名不分先後,按姓名首字母進行排序。這是中國人大多數使用的排序方法。那麽在php程序中該如何操作呢? 下面就分享一下在php程序中獲取漢字

mysql獲取漢字拼音字母

DELIMITER $$ USE `test`$$ DROP FUNCTION IF EXISTS `getPY`$$ CREATE DEFINER=`root`@`%` FUNCTION `getPY`(in_string VARCHAR(255)) RETURNS VARCHAR(255)

在Excel中如何獲取漢字拼音字母?

轉自:https://jingyan.baidu.com/article/0a52e3f43c3f6abf63ed7259.html百度經驗 在Excel中如何獲取漢字拼音首字母?|      在工作中,為了方便查詢、排序或者編碼,需要生成漢字內容

獲取漢字拼音字母類封裝

1、程式碼如下: 1 <?php 2 /** 3 * @file Pinyin.php 4 * @author whx https://www.cnblogs.com/whx-blogs/ 5 * @date 2018/12/03 18:32:18

sqlserver 獲取漢字拼音字母

create function [dbo].[fun_getPY](@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nvarchar(1),@PY nvarchar(4000) set @PY='' set @st

VC/MFC 獲取漢字拼音字母(unicode編碼)

CString GetFirstLetter(LPCTSTR strName) { static int li_SecPosValue[] = { 1601, 1637, 1833, 2078, 2274, 2302, 2433,

JAVA獲取漢字拼音字母

ecp ascii碼 else chart || versions odin osc 支持 package com.common.util;import java.io.UnsupportedEncodingException; /** * 取得給定漢字串的首字母串,即

漢字拼音字母的方法

nts cti res character con andro 字節 ext creat 近期在做一個按拼音首字母排序的ListView須要取漢字拼音首字母,Deomo下載地址:http://download.csdn.net/detail/u014649598/8

JS獲取中文拼音字母,並通過拼音字母快速查詢頁面內的中文內容

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

根據漢字拼音字母排序

                Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);String[] newArray={"

(轉)C# 獲取漢字拼音字母和全拼(含原始碼)[A]

  https://blog.csdn.net/younghaiqing/article/details/62417269   C# 獲取漢字的拼音首字母 一種是把所有中文字元集合起來組成一個對照表;另一種是依照漢字在Unicode編碼表中的排序來確定拼音的首字母

MySQL獲取漢字拼音字母

--獲取漢字拼音首字母的函式其一 DROP FUNCTION IF EXISTS `GET_FIRST_PINYIN_CHAR`; DELIMITER ;; CREATE FUNCTION `GET_F

Java獲取獲取漢字拼音字母程式碼

1、定義一個Bean: public class PinyinCode {  private String pinyin;  private int code;    public PinyinCode(String py, int cd) {   pinyin = py;

在vc中實現獲取漢字拼音字母

最近打算做一個基於字串首字元(漢字取拼音的首字母)進行查詢的電話簿WEB專案,由於Web本身並不支援漢字的編碼程式設計,因此需要求助於平臺開發工具。  Google上搜到一種實現方法,是用C++實現的。以下是原始碼:  void GetFirstLetter(CString

delphi 漢字拼音字母

function HZtoPY(HZStr: WideString): String; Var s, c: AnsiString; i: Integer; begin Result := ''; for i := 1 To Length(HZStr) do

根據漢字獲取拼音字母(轉)

<mce:script  language="vbscript"><!--   function vbChr(c)    vbChr = chr(c)    end function   function vbAsc(n)    vbAsc = asc(n)    end f

簡單測試--C#實現中文漢字拼音字母

esp chart htm foreach ext ads linq 類庫 play 第一種: 這個是自己寫的比較簡單的實現方法,要做漢字轉拼音首字母,首先應該有一個存儲首字母的數組,然後將要轉拼音碼的漢字與每個首字母開頭的第一個漢字即“最小”的漢字作比較,這裏的最小指的是

PHP獲取中文字符拼音字母

toupper value date 排序 cnblogs log gb2 需求 ram 在項目中遇到需要把遊戲進行字母排序,於是百度到一個格式化的首字母的方法。 /** * @name php獲取中文字符拼音首字母 * @param $str

oracle漢字拼音(獲得全拼/拼音字母/拼音截取等)

sub 截取 需要 sel 內容 zip bsp .com 整理 oracle漢字轉拼音(獲得全拼/拼音首字母/拼音截取等) 效果如下: Oracle 字符集 GBK 沒有問題 , UTF -8 需要修改一下Sql代碼 --oracle漢字轉拼音 PACKAGE --1