急求可以将汉字转化为拼音首字母的程序代码,

losenetway 2004-04-06 02:51:07
大家一般是怎么解决这种问题的呢?
我现在要做一个从用户名称获得用户拼音首字母的功能,
大家有什么好办法啊。
...全文
449 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
李洪喜 2004-04-20
  • 打赏
  • 举报
回复
水晶的代码不错,应该得90分。
chenlixin007 2004-04-08
  • 打赏
  • 举报
回复
GOOD!!!
happydayandday 2004-04-08
  • 打赏
  • 举报
回复
常修溢 2004-04-08
  • 打赏
  • 举报
回复
学习
qazsw 2004-04-08
  • 打赏
  • 举报
回复
up
tongcheng 2004-04-08
  • 打赏
  • 举报
回复

但想问主要用在什么功能中呀?
bborn 2004-04-08
  • 打赏
  • 举报
回复
顶 强 收藏!!!
qiume 2004-04-08
  • 打赏
  • 举报
回复
好东西,俺收藏
烤火的鱼 2004-04-08
  • 打赏
  • 举报
回复
如果软件用不到数据库(这类软件好象很少吧),你也可以将拼音首字母放到一个文件中,由于一个汉字对应一个字母,规律性非常强,排序后用一个简单的二分法查找是非常快的,如果你的C++学得不错,且汉字研究有一定造诣,还可以利用位操作将拼音首字母和汉字合并放到2~3个字节中,既加快速度,又节约空间,不过,现在计算机磁盘和速度都比较满意,做这些小技巧没有必要了。
烤火的鱼 2004-04-08
  • 打赏
  • 举报
回复
另外,如果要GBK的(一般用不着),我也可以提供,但没有整理规范,自己再处理一下就可以了,也放在ftp://qydn.vicp.net用,名字为gbk.txt。
烤火的鱼 2004-04-08
  • 打赏
  • 举报
回复
搞那么复杂干什么,将国标汉字全部整理出来,放到数据库表中,自己查询好了,我已经弄好了,放在ftp://qydn.vicp.net中,是一个excel表,我的查询代码如下:
/// <summary>
/// 根据名称自动生成简写
/// </summary>
/// <param name="strName">中文名称</param>
/// <returns>该中文名称的拼音首字母组合</returns>
public static string GetNameSimple(string strName)
{
string strSimple="";
strName=strName.Trim();
string strSql="select 首字母 from 拼音首字母 where 汉字='";
string strValue="";
//有字符
if(strName.Length>0)
{
foreach(char word in strName)
{
strValue=Tools.GetAStrValue(strSql+word.ToString()+"'");
if(strValue.Length>0)//找到
strSimple+=strValue;
else //否则用自己代替,如本身就是英文字母
strSimple+=word.ToString();
}

}
return strSimple;

}
yong427 2004-04-07
  • 打赏
  • 举报
回复
在那里对输入的汉字查找它对应的拼音

用c:\winnt\system32\imeGen.exe输入法生成器的逆转换功能把
c:\winnt\system32\winpy.mb生成相应的文本对照表winpy.txt, 用的时候就是查找每个汉字/词组

对应的拼音, 把各拼音连接成字符串, 赋给另一个TextBox

取出来的拼音并不一定完全正确, 应该让用户可以修改
如果你有拼音和汉字的对应表的话,可以在客户端用JavaScript实现。具体方法是,在TextBox1的OnKeyUp事件中判断TextBox1是否已经输入一个完整汉字,如果是则到拼音对应表中查拼音显示在TextBox2中。


如果你有拼音和汉字的对应表的话,可以在客户端用JavaScript实现。具体方法是,在TextBox1的OnKeyUp事件中判断TextBox1是否已经输入一个完整汉字,如果是则到拼音对应表中查拼音显示在TextBox2中。

try
{
for(int i =0;i<textBox1.Text.Length;i++)
{
StreamReader srReadLine = new StreamReader((System.IO.Stream)File.OpenRead("WINPY1.TXT"),System.Text.UnicodeEncoding.Default);
srReadLine.BaseStream.Seek(0, SeekOrigin.Begin);
do
{ string strTem = srReadLine.ReadLine();
if(textBox1.Text.Substring(i,1) == strTem.Substring(0,1))
{
int m = strTem.Length-1;
MessageBox.Show("",strTem);
richTextBox1.Text += strTem.Substring(1,m);
break;
}
}
while((srReadLine.Peek() > -1));
srReadLine.Close();
}
}
catch(Exception en)
{
throw(en);
}
losenetway 2004-04-07
  • 打赏
  • 举报
回复
to: turnmissile
有那个表的数据么?
我现在需要的是这个表的数据,
有多少个数据呢?
Aglie 2004-04-06
  • 打赏
  • 举报
回复
Mark
qozm 2004-04-06
  • 打赏
  • 举报
回复
很好,学习
turnmissile 2004-04-06
  • 打赏
  • 举报
回复
//这里有个sample将所有国标汉字的拼音首字母取出来,放到一个表中,然后查出。你可以借鉴一下:
public string Getpingyin(string strName,System.Data.OleDb.OleDbConnection con,System.Data.SqlClient.SqlConnection sqlcon)
{
System.Data.SqlClient.SqlDataAdapter sqlda;
System.Data.OleDb.OleDbDataAdapter oleda;
string strSimple="";
strName=strName.Trim();
System.Data.DataSet myDataSet=new System.Data.DataSet();
if(strName.Length>0)
{
for(int num=0;num<strName.Length;num++)//不准用户输入非汉字
if(Convert.ToInt32(strName[num])<=255)
{

System.Windows.Forms.MessageBox.Show("你输入的字符\" "+strName[num].ToString()+"\"不是汉字,请更正","错误",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Stop);
return "";

}

string strSql="select 汉字,首字母 from 拼音首字母";
string strWhere=" where 汉字='"+strName[0].ToString()+"'"; //查询汉字,与字母的SQL
for(int i=1;i<strName.Length;i++)
{
strWhere+=" or 汉字='"+strName[i].ToString()+"'";
}
strSql+=strWhere;
if(con!=null)//看用户是用那个名字空间类.
{
oleda=new System.Data.OleDb.OleDbDataAdapter(strSql,con);
oleda.Fill(myDataSet,"拼音首字母");
}
else

{
sqlda=new System.Data.SqlClient.SqlDataAdapter(strSql,sqlcon);
sqlda.Fill(myDataSet,"拼音首字母");
}
for(int j=0;j<strName.Length;j++)//按汉字顺序找出相关的字母.
{
for(int k=0;k<myDataSet.Tables["拼音首字母"].Rows.Count;k++)
{
if(strName[j].ToString()==myDataSet.Tables["拼音首字母"].Rows[k]["汉字"].ToString())
{
strSimple+=myDataSet.Tables["拼音首字母"].Rows[k]["首字母"].ToString();
break;

}
}
}
myDataSet.Clear();

return strSimple;//得到字母

}

return "";

}

//用法例子
//OleDbConnection con=new .........;
//Getpingyin("我",con,null);返回w

wangsaokui 2004-04-06
  • 打赏
  • 举报
回复
低头拜读,厉害(耐性......)
losenetway 2004-04-06
  • 打赏
  • 举报
回复
我想采用将汉字一个一个的保存在数据库中的方法,同时保存他们的拼音,解析好的首字母,
然后在用的过程中让用户去维护那些太生的字,

但是我需要一个基础库,我用了 输入法生成器 来逆转换一个马表文件来获得拼音,
只是WINPY.MB 中的汉字太少了,
大家有没有好一点的马表文件呢?
紫光的 字 很多的,但是他的马表文件在哪里呢?
xuzuning 2004-04-06
  • 打赏
  • 举报
回复
除 yzh0523(水手) 的可以处理二级字库外都只适用一级字库
那么gbk扩展的部分呢?异音字呢?
CMIC 2004-04-06
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/Read_Article.asp?Id=25731
http://www.csdn.net/Develop/Read_Article.asp?Id=25536
加载更多回复(7)

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧