一个ASP.NET中汉字转拼音的程序

来源:互联网 发布:英国留学中介 知乎 编辑:程序博客网 时间:2024/04/19 13:15
这是它的html源代码

<%@ Page language="c#" Codebehind="No1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.No1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 
<HEAD>
  
<title>No1</title>
  
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
  
<meta content="C#" name="CODE_LANGUAGE">
  
<meta content="javascript" name="vs_defaultClientScript">
  
<meta content="http://schemas.microsoft.com/intellisense/ie5"; name="vs_targetSchema">
 
</HEAD>
 
<body MS_POSITIONING="GridLayout">
  
<form id="Form1" method="post" runat="server">
   
<FONT face="宋体">
    
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 24px" runat="server"></asp:TextBox>
    
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 200px; POSITION: absolute; TOP: 24px" runat="server"
     Text
="Button"></asp:Button>
    
<asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 40px; POSITION: absolute; TOP: 72px" runat="server"></asp:Label></FONT></form>
 
</body>
</HTML> 
 
这是它的CS源程序:

using System;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; 

namespace WebApplication2
{
 
/// <summary>
 
/// No1 的摘要说明。
 
/// </summary>

 public class No1 : System.Web.UI.Page
 
{
  
protected System.Web.UI.WebControls.TextBox TextBox1;
  
protected System.Web.UI.WebControls.Button Button1;
  
protected System.Web.UI.WebControls.Label Label1;
  
private Hashtable ht;
  
string g(int num)
  
{
   
if(num < -20319||num > -10247)
    
return "";
   
while(!ht.ContainsKey(num))
    num
--;
   
return ht[num].ToString();
  }

  
string c(string hz)
  
{
   
byte[] b=System.Text.Encoding.Default.GetBytes(hz);
   
int p;
   StringBuilder ret
=new StringBuilder();
   
for(int i=0;i< b.Length;i++)
   
{
    p
=(int)b[i];
    
if(p>160)
    
{
     p
=p*256+b[++i]-65536;
     ret.Append(g(p));
    }

    
else
    
{
     ret.Append((
char)p);
    }

   }

   
return
    ret.ToString();
  }
 


void b() 
  
{
   ht
=new Hashtable(); 
   ht.Add(
-20319,"a"); 
   ht.Add(
-20317,"ai");ht.Add(-20304,"an"); ht.Add(-20295,"ang"); 
   ht.Add(
-20292,"ao");ht.Add(-20283,"ba"); ht.Add(-20265,"bai"); 
   ht.Add(
-20257,"ban");ht.Add(-20242,"bang"); ht.Add(-20230,"bao"); 
   ht.Add(
-20051,"bei"); ht.Add(-20036,"ben"); ht.Add(-20032,"beng"); 
   ht.Add(
-20026,"bi"); ht.Add(-20002,"bian"); ht.Add(-19990,"biao"); 
   ht.Add(
-19986,"bie"); ht.Add(-19982,"bin"); ht.Add(-19976,"bing"); 
   ht.Add(
-19805,"bo"); ht.Add(-19784,"bu"); ht.Add(-19775,"ca"); 
   ht.Add(
-19774,"cai"); ht.Add(-19763,"can"); ht.Add(-19756,"cang"); 
   ht.Add(
-19751,"cao"); ht.Add(-19746,"ce"); ht.Add(-19741,"ceng"); 
   ht.Add(
-19739,"cha"); ht.Add(-19728,"chai"); ht.Add(-19725,"chan"); 
   ht.Add(
-19715,"chang"); ht.Add(-19540,"chao"); ht.Add(-19531,"che"); 
   ht.Add(
-19525,"chen"); ht.Add(-19515,"cheng"); ht.Add(-19500,"chi"); 
   ht.Add(
-19484,"chong"); ht.Add(-19479,"chou"); ht.Add(-19467,"chu"); 
   ht.Add(
-19289,"chuai"); ht.Add(-19288,"chuan"); ht.Add(-19281,"chuang"); 
   ht.Add(
-19275,"chui"); ht.Add(-19270,"chun"); ht.Add(-19263,"chuo"); 
   ht.Add(
-19261,"ci"); ht.Add(-19249,"cong"); ht.Add(-19243,"cou"); 
   ht.Add(
-19242,"cu"); ht.Add(-19238,"cuan"); ht.Add(-19235,"cui"); 
   ht.Add(
-19227,"cun"); ht.Add(-19224,"cuo"); ht.Add(-19218,"da"); 
   ht.Add(
-19212,"dai"); ht.Add(-19038,"dan"); ht.Add(-19023,"dang"); 
   ht.Add(
-19018,"dao"); ht.Add(-19006,"de"); ht.Add(-19003,"deng"); 
   ht.Add(
-18996,"di"); ht.Add(-18977,"dian"); ht.Add(-18961,"diao"); 
   ht.Add(
-18952,"die"); ht.Add(-18783,"ding"); ht.Add(-18774,"diu"); 
   ht.Add(
-18773,"dong"); ht.Add(-18763,"dou"); ht.Add(-18756,"du"); 
   ht.Add(
-18741,"duan"); ht.Add(-18735,"dui"); ht.Add(-18731,"dun"); 
   ht.Add(
-18722,"duo"); ht.Add(-18710,"e"); ht.Add(-18697,"en"); 
   ht.Add(
-18696,"er"); ht.Add(-18526,"fa"); ht.Add(-18518,"fan"); 
   ht.Add(
-18501,"fang"); ht.Add(-18490,"fei"); ht.Add(-18478,"fen"); 
   ht.Add(
-18463,"feng"); ht.Add(-18448,"fo"); ht.Add(-18447,"fou"); 
   ht.Add(
-18446,"fu"); ht.Add(-18239,"ga"); ht.Add(-18237,"gai"); 
   ht.Add(
-18231,"gan"); ht.Add(-18220,"gang"); ht.Add(-18211,"gao"); 
   ht.Add(
-18201,"ge"); ht.Add(-18184,"gei"); ht.Add(-18183,"gen"); 
   ht.Add(
-18181,"geng"); ht.Add(-18012,"gong"); ht.Add(-17997,"gou"); 
   ht.Add(
-17988,"gu"); ht.Add(-17970,"gua"); ht.Add(-17964,"guai"); 
   ht.Add(
-17961,"guan"); ht.Add(-17950,"guang"); ht.Add(-17947,"gui"); 
   ht.Add(
-17931,"gun"); ht.Add(-17928,"guo"); ht.Add(-17922,"ha"); 
   ht.Add(
-17759,"hai"); ht.Add(-17752,"han"); ht.Add(-17733,"hang"); 
   ht.Add(
-17730,"hao"); ht.Add(-17721,"he"); ht.Add(-17703,"hei"); 
   ht.Add(
-17701,"hen"); ht.Add(-17697,"heng"); ht.Add(-17692,"hong"); 
   ht.Add(
-17683,"hou"); ht.Add(-17676,"hu"); ht.Add(-17496,"hua"); 
   ht.Add(
-17487,"huai"); ht.Add(-17482,"huan"); ht.Add(-17468,"huang"); 
   ht.Add(
-17454,"hui"); ht.Add(-17433,"hun"); ht.Add(-17427,"huo"); 
   ht.Add(
-17417,"ji"); ht.Add(-17202,"jia"); ht.Add(-17185,"jian"); 
   ht.Add(
-16983,"jiang"); ht.Add(-16970,"jiao"); ht.Add(-16942,"jie"); 
   ht.Add(
-16915,"jin"); ht.Add(-16733,"jing"); ht.Add(-16708,"jiong"); 
   ht.Add(
-16706,"jiu"); ht.Add(-16689,"ju"); ht.Add(-16664,"juan"); 
   ht.Add(
-16657,"jue"); ht.Add(-16647,"jun"); ht.Add(-16474,"ka"); 
   ht.Add(
-16470,"kai"); ht.Add(-16465,"kan"); ht.Add(-16459,"kang"); 
   ht.Add(
-16452,"kao"); ht.Add(-16448,"ke"); ht.Add(-16433,"ken"); 
   ht.Add(
-16429,"keng"); ht.Add(-16427,"kong"); ht.Add(-16423,"kou"); 
   ht.Add(
-16419,"ku"); ht.Add(-16412,"kua"); ht.Add(-16407,"kuai"); 
   ht.Add(
-16403,"kuan"); ht.Add(-16401,"kuang"); ht.Add(-16393,"kui"); 
   ht.Add(
-16220,"kun"); ht.Add(-16216,"kuo"); ht.Add(-16212,"la"); 
   ht.Add(
-16205,"lai"); ht.Add(-16202,"lan"); ht.Add(-16187,"lang"); 
   ht.Add(
-16180,"lao"); ht.Add(-16171,"le"); ht.Add(-16169,"lei"); 
   ht.Add(
-16158,"leng"); ht.Add(-16155,"li"); ht.Add(-15959,"lia"); 
   ht.Add(
-15958,"lian"); ht.Add(-15944,"liang"); ht.Add(-15933,"liao"); 
   ht.Add(
-15920,"lie"); ht.Add(-15915,"lin"); ht.Add(-15903,"ling"); 
   ht.Add(
-15889,"liu"); ht.Add(-15878,"long"); ht.Add(-15707,"lou");
   ht.Add(
-15701,"lu");ht.Add(-15681,"lv");ht.Add(-15667,"luan");
   ht.Add(
-15661,"lue");ht.Add(-15659,"lun");ht.Add(-15652,"luo");
   ht.Add(
-15640,"ma");ht.Add(-15631,"mai");ht.Add(-15625,"man");
   ht.Add(
-15454,"mang");ht.Add(-15448,"mao");ht.Add(-15436,"me");
   ht.Add(
-15435,"mei");ht.Add(-15419,"men");ht.Add(-15416,"meng");
   ht.Add(
-15408,"mi");ht.Add(-15394,"mian");ht.Add(-15385,"miao");
   ht.Add(
-15377,"mie");ht.Add(-15375,"min");ht.Add(-15369,"ming");
   ht.Add(
-15363,"miu");ht.Add(-15362,"mo");ht.Add(-15183,"mou");
   ht.Add(
-15180,"mu");ht.Add(-15165,"na");ht.Add(-15158,"nai");
   ht.Add(
-15153,"nan");ht.Add(-15150,"nang");ht.Add(-15149,"nao");
   ht.Add(
-15144,"ne");ht.Add(-15143,"nei");ht.Add(-15141,"nen");
   ht.Add(
-15140,"neng");ht.Add(-15139,"ni");ht.Add(-15128,"nian");
   ht.Add(
-15121,"niang");ht.Add(-15119,"niao");ht.Add(-15117,"nie");
   ht.Add(
-15110,"nin");ht.Add(-15109,"ning");ht.Add(-14941,"niu");
   ht.Add(
-14937,"nong");ht.Add(-14933,"nu");ht.Add(-14930,"nv");
   ht.Add(
-14929,"nuan");ht.Add(-14928,"nue");ht.Add(-14926,"nuo");
   ht.Add(
-14922,"o");ht.Add(-14921,"ou");ht.Add(-14914,"pa");
   ht.Add(
-14908,"pai");ht.Add(-14902,"pan");ht.Add(-14894,"pang");
   ht.Add(
-14889,"pao");ht.Add(-14882,"pei");ht.Add(-14873,"pen");
   ht.Add(
-14871,"peng");ht.Add(-14857,"pi");ht.Add(-14678,"pian");
   ht.Add(
-14674,"piao");ht.Add(-14670,"pie");ht.Add(-14668,"pin");
   ht.Add(
-14663,"ping");ht.Add(-14654,"po");ht.Add(-14645,"pu"); 
   ht.Add(
-14630,"qi");ht.Add(-14594,"qia");ht.Add(-14429,"qian");
   ht.Add(
-14407,"qiang");ht.Add(-14399,"qiao");ht.Add(-14384,"qie");
   ht.Add(
-14379,"qin");ht.Add(-14368,"qing");ht.Add(-14355,"qiong");
   ht.Add(
-14353,"qiu");ht.Add(-14345,"qu");ht.Add(-14170,"quan");
   ht.Add(
-14159,"que");ht.Add(-14151,"qun");ht.Add(-14149,"ran");
   ht.Add(
-14145,"rang");ht.Add(-14140,"rao");ht.Add(-14137,"re");
   ht.Add(
-14135,"ren");ht.Add(-14125,"reng");ht.Add(-14123,"ri");
   ht.Add(
-14122,"rong");ht.Add(-14112,"rou");ht.Add(-14109,"ru");
   ht.Add(
-14099,"ruan");ht.Add(-14097,"rui");ht.Add(-14094,"run");
   ht.Add(
-14092,"ruo");ht.Add(-14090,"sa");ht.Add(-14087,"sai");
   ht.Add(
-14083,"san");ht.Add(-13917,"sang");ht.Add(-13914,"sao");
   ht.Add(
-13910,"se");ht.Add(-13907,"sen");ht.Add(-13906,"seng");
   ht.Add(
-13905,"sha");ht.Add(-13896,"shai");ht.Add(-13894,"shan");
   ht.Add(
-13878,"shang");ht.Add(-13870,"shao");ht.Add(-13859,"she");
   ht.Add(
-13847,"shen");ht.Add(-13831,"sheng");ht.Add(-13658,"shi");
   ht.Add(
-13611,"shou");ht.Add(-13601,"shu");ht.Add(-13406,"shua");
   ht.Add(
-13404,"shuai");ht.Add(-13400,"shuan");ht.Add(-13398,"shuang");
   ht.Add(
-13395,"shui");ht.Add(-13391,"shun");ht.Add(-13387,"shuo");
   ht.Add(
-13383,"si");ht.Add(-13367,"song");ht.Add(-13359,"sou");
   ht.Add(
-13356,"su");ht.Add(-13343,"suan");ht.Add(-13340,"sui");
   ht.Add(
-13329,"sun");ht.Add(-13326,"suo");ht.Add(-13318,"ta");
   ht.Add(
-13147,"tai");ht.Add(-13138,"tan");ht.Add(-13120,"tang");
   ht.Add(
-13107,"tao");ht.Add(-13096,"te");ht.Add(-13095,"teng");
   ht.Add(
-13091,"ti");ht.Add(-13076,"tian");ht.Add(-13068,"tiao");
   ht.Add(
-13063,"tie");ht.Add(-13060,"ting");ht.Add(-12888,"tong");
   ht.Add(
-12875,"tou");ht.Add(-12871,"tu");ht.Add(-12860,"tuan");
   ht.Add(
-12858,"tui");ht.Add(-12852,"tun");ht.Add(-12849,"tuo");
   ht.Add(
-12838,"wa");ht.Add(-12831,"wai");ht.Add(-12829,"wan");
   ht.Add(
-12812,"wang");ht.Add(-12802,"wei");ht.Add(-12607,"wen");
   ht.Add(
-12597,"weng");ht.Add(-12594,"wo");ht.Add(-12585,"wu");
   ht.Add(
-12556,"xi");ht.Add(-12359,"xia");ht.Add(-12346,"xian");
   ht.Add(
-12320,"xiang");ht.Add(-12300,"xiao");ht.Add(-12120,"xie");
   ht.Add(
-12099,"xin");ht.Add(-12089,"xing");ht.Add(-12074,"xiong");
   ht.Add(
-12067,"xiu");ht.Add(-12058,"xu");ht.Add(-12039,"xuan");
   ht.Add(
-11867,"xue");ht.Add(-11861,"xun");ht.Add(-11847,"ya");
   ht.Add(
-11831,"yan");ht.Add(-11798,"yang");ht.Add(-11781,"yao");
   ht.Add(
-11604,"ye");ht.Add(-11589,"yi");ht.Add(-11536,"yin");
   ht.Add(
-11358,"ying");ht.Add(-11340,"yo");ht.Add(-11339,"yong");
   ht.Add(
-11324,"you");ht.Add(-11303,"yu");ht.Add(-11097,"yuan");
   ht.Add(
-11077,"yue");ht.Add(-11067,"yun");ht.Add(-11055,"za");
   ht.Add(
-11052,"zai");ht.Add(-11045,"zan");ht.Add(-11041,"zang");
   ht.Add(
-11038,"zao");ht.Add(-11024,"ze");ht.Add(-11020,"zei");
   ht.Add(
-11019,"zen");ht.Add(-11018,"zeng");ht.Add(-11014,"zha");
   ht.Add(
-10838,"zhai");ht.Add(-10832,"zhan");ht.Add(-10815,"zhang");
   ht.Add(
-10800,"zhao");ht.Add(-10790,"zhe");ht.Add(-10780,"zhen");
   ht.Add(
-10764,"zheng");ht.Add(-10587,"zhi");ht.Add(-10544,"zhong");
   ht.Add(
-10533,"zhou");ht.Add(-10519,"zhu");ht.Add(-10331,"zhua");
   ht.Add(
-10329,"zhuai");ht.Add(-10328,"zhuan");ht.Add(-10322,"zhuang");
   ht.Add(
-10315,"zhui");ht.Add(-10309,"zhun");ht.Add(-10307,"zhuo");
   ht.Add(
-10296,"zi");ht.Add(-10281,"zong");ht.Add(-10274,"zou");
   ht.Add(
-10270,"zu");ht.Add(-10262,"zuan");ht.Add(-10260,"zui");
   ht.Add(
-10256,"zun");ht.Add(-10254,"zuo");ht.Add(-10247,"zz");
   Cache[
"ht"]=ht;
  }
 

  
void Page_Load(Object sender, EventArgs e) 
  
{
  }

  
Web 窗体设计器生成的代码 

  
private void Button1_Click(object sender, System.EventArgs e)
  
{
   
if(Cache["ht"== null)
   
{
    b();
   }

   ht 
= (Hashtable)Cache["ht"];
   
string hz = this.TextBox1.Text;
   
this.Label1.Text = (c(hz));
  }

 }

}
 

大概思路是这样的:

1、建立一张哈希表,用于对应汉字内码和拼音,ht = (Hashtable)Cache["ht"];
2、取出汉字的内码见 string c(string hz)

3、取出对应的拼音,详见string g(int num)


一个函数!!!

//*********取的一个汉字的首字母  
public string  Extract_HZ(string HZ) 
 
{
  
byte[] ZW = new byte[2];
  
long HZ_INT;
  ZW 
= System.Text.Encoding.Default.GetBytes(HZ);
                   
// get the  array of byte from the single char 
  
//int i1 = (short)(array[0] - oxa1);
  
//int i2 = (short)(array[1] - oxa1);
  int i1 = (short)(ZW[0]);
  
int i2 = (short)(ZW[1]);
  HZ_INT
=i1*256+i2; //  expresstion
  
//table of the constant list
  
// 'A';     //45217..45252
  
// 'B';     //45253..45760
  
// 'C';     //45761..46317
  
// 'D';     //46318..46825
  
// 'E';     //46826..47009
  
// 'F';     //47010..47296
  
// 'G';     //47297..47613 

  
// 'H';     //47614..48118
  
// 'J';     //48119..49061
  
// 'K';     //49062..49323
  
// 'L';     //49324..49895
  
// 'M';     //49896..50370
  
// 'N';     //50371..50613
  
// 'O';     //50614..50621
  
// 'P';     //50622..50905
  
// 'Q';     //50906..51386 

  
// 'R';     //51387..51445
  
// 'S';     //51446..52217
  
// 'T';     //52218..52697
  
//没有U,V
  
// 'W';     //52698..52979
  
// 'X';     //52980..53640
  
// 'Y';     //53689..54480
  
// 'Z';     //54481..55289 

  
// HZ_INT match  the constant
  if  ((HZ_INT>=45217&& (HZ_INT<=45252))
 
{
  
return "A";
 }

  
if ((HZ_INT>=45253&& (HZ_INT<=45760))
 
{
  
return "B";
 }

  
if  ((HZ_INT>=45761&& (HZ_INT<=46317))
 
{
  
return "C"

 }

  
if ((HZ_INT>=46318&& (HZ_INT<=46825))
 
{
  
return "D";
 }

  
if  ((HZ_INT>=46826&& (HZ_INT<=47009))
 
{
  
return "E";
 }

  
if ((HZ_INT>=47010&& (HZ_INT<=47296))
 
{
  
return "F";
 }

  
if ((HZ_INT>=47297&& (HZ_INT<=47613))
 
{
  
return "G";
 }
 
  
//**************************
  if ((HZ_INT>=47614&& (HZ_INT<=48118))
 
{
  
//MessageBox.Show("H");
  return "H";
 }

   
  
if ((HZ_INT>=48119&& (HZ_INT<=49061))
 
{
  
return "J";
 }

  
if ((HZ_INT>=49062&& (HZ_INT<=49323))
 
{
  
return "K";
 }
 
  
if ((HZ_INT>=49324&& (HZ_INT<=49895))
 
{
  
return "L";
 }

  
if ((HZ_INT>=49896&& (HZ_INT<=50370))
 
{
  
return "M";
 }
  

  
if ((HZ_INT>=50371&& (HZ_INT<=50613))
 
{
  
return "N"

 }

  
if ((HZ_INT>=50614&& (HZ_INT<=50621))
 
{
  
return "O";
 }
                      
  
if ((HZ_INT>=50622&& (HZ_INT<=50905))
 
{
  
return "P"

 }
           
  
if ((HZ_INT>=50906&& (HZ_INT<=.51386))
 
{
  
return "Q"

 }
  
  
//*********************       
  if ((HZ_INT>=51387&& (HZ_INT<=51445))
 
{
  
return "R";
 }
 
  
if ((HZ_INT>=51446&& (HZ_INT<=52217))
 
{
  
return "S";
 }

  
if ((HZ_INT>=52218&& (HZ_INT<=52697))
 
{
  
return "T";
 }
                      
  
if ((HZ_INT>=52698&& (HZ_INT<=52979))
 
{
  
return "W"
 }
           
  
if ((HZ_INT>=52980&& (HZ_INT<=53640))
 
{
  
return "X";
 }
  
  
if ((HZ_INT>=53689&& (HZ_INT<=54480))
 
{
  
return "Y";
 }
           
  
if ((HZ_INT>=54481&& (HZ_INT<=55289))
 
{
  
return "Z";
 }
  
  
return ("");
 }