怎样获取一个汉字及词语的拼音(完整拼音)?而不止是其首字母。谢谢!!

解决方案 »

  1.   

    按拼音索引查找汉字  
     
    文档内容 
    // 在指定的字串列表[SourceStrs]中按拼音索引字串符合[PYIndexStr]的所有字串 
      function GetPYIndexChar(hzchar: string): char; 
      begin 
        case Word(hzchar[1]) shl 8 + Word(hzchar[2]) of 
          $B0A1..$B0C4: result := 'A'; 
          $B0C5..$B2C0: result := 'B'; 
          $B2C1..$B4ED: result := 'C'; 
          $B4EE..$B6E9: result := 'D'; 
          $B6EA..$B7A1: result := 'E'; 
          $B7A2..$B8C0: result := 'F'; 
          $B8C1..$B9FD: result := 'G'; 
          $B9FE..$BBF6: result := 'H'; 
          $BBF7..$BFA5: result := 'J'; 
          $BFA6..$C0AB: result := 'K'; 
          $C0AC..$C2E7: result := 'L'; 
          $C2E8..$C4C2: result := 'M'; 
          $C4C3..$C5B5: result := 'N'; 
          $C5B6..$C5BD: result := 'O'; 
          $C5BE..$C6D9: result := 'P'; 
          $C6DA..$C8BA: result := 'Q'; 
          $C8BB..$C8F5: result := 'R'; 
          $C8F6..$CBF9: result := 'S'; 
          $CBFA..$CDD9: result := 'T'; 
          $CDDA..$CEF3: result := 'W'; 
          $CEF4..$D188: result := 'X'; 
          $D1B9..$D4D0: result := 'Y'; 
          $D4D1..$D7F9: result := 'Z'; 
        else 
          result := char(0); 
        end; 
      end; 
    label 
      NotFound; 
    var 
      I, J: integer; 
      hzchar: string; 
    begin 
      for I := 0 to SourceStrs.Count - 1 do 
      begin 
        for J := 1 to Length(PYIndexStr) do 
        begin 
          hzchar := SourceStrs[I][2 * J - 1] + SourceStrs[I][2 * J]; 
          if (PYIndexStr[J] <> '?') and 
            (UpperCase(PYIndexStr[J]) <> GetPYIndexChar(hzchar)) then 
            goto NotFound; 
        end; 
        if result = '' then 
          result := SourceStrs[I] // 找到一行 
        else 
          result := result + Char(13) + SourceStrs[I]; // 找到多行 
        NotFound: 
      end; 
    end;  
    //多字截取
    function GetPY(hzchar: string): string;
    var
    i,j:integer;
    a,b,c:string;
    begin
    c:='';
    for i:=1 to length(hzchar) do
      begin
      j:=0;
      if i mod 2=0 then j:=1;
        if j=0 then
        begin
          a:=copy(hzchar,i,2);
          b:=GetPYIndexChar(a);
          c:=c+b;
        end;
      end;
      result:=c;
    end;
      

  2.   

    Javascript版中有同样的问题,是用对照表做的。程序写好了改成Delphi就行了。