http://www.aspsky.net/article/show.aspx?id=2735看看这个也许能给你提供思路

解决方案 »

  1.   

    awaysrain(绝对零度) 
    public class ClassPY
    {
    ArrayList listpy=new ArrayList();
    ArrayList listnum=new ArrayList(); public ClassPY()
    {
    listpy.Add("a");listnum.Add(-20319);
    ....
    listpy.Add( "zhou");listnum.Add(-10533);
    listpy.Add( "zhu");listnum.Add(-10519);
    listpy.Add( "zhua");listnum.Add(-10331);
    listpy.Add( "zhuai");listnum.Add(-10329);
    listpy.Add( "zhuan");listnum.Add(-10328);
    listpy.Add( "zhuang");listnum.Add(-10322);
    listpy.Add( "zhui");listnum.Add(-10315);
    listpy.Add( "zhun");listnum.Add(-10309);
    listpy.Add( "zhuo");listnum.Add(-10307);
    listpy.Add( "zi");listnum.Add(-10296);
    listpy.Add( "zong");listnum.Add(-10281);
    listpy.Add( "zou");listnum.Add(-10274);
    listpy.Add( "zu");listnum.Add(-10270);
    listpy.Add( "zuan");listnum.Add(-10262);
    listpy.Add( "zui");listnum.Add(-10260);
    listpy.Add( "zun");listnum.Add(-10256);
    listpy.Add( "zuo");listnum.Add(-10254); }
    private string g(float num)
    {
    if ((num>0) && (num<160))
    {
    String sz_temp=""+(char)num;
    return sz_temp;
    }
    else 
    if ((num<-20319) || (num>-10247) )
    return "";
    else
    {
    int i=0;
    for (i=this.listpy.Count-1;i>= 0;i--)
    {
    if ((float)listnum[i]<=num)
    break;
    }
    return(listpy[i].ToString());
    }
    } public String getpy(String str)
    {
                String c="";
    for (int i=0;i<str.Length;i++)
    {
    c=c+g(Convert.ToInt32(str[i]));
    } return c;
       }
    }
    研究了,在C#中不行
      

  2.   

    storm97(风暴不再)不是取拼音首字,比如输入"二"返回"er"
      

  3.   

    storm97(风暴不再)所提供的思路最终可行,但没时间改了!
      

  4.   

    发错 awaysrain(绝对零度) 
    提供的思路可行,但我没时间改。散分