VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之C# 汉字获取拼音首字母,给数据库中的姓名添加首字母

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

本方案采用微软官方语言包

(下载链接: https://pan.baidu.com/s/10I1bhTdFr4-q_xKVHuEzMA 提取码: p3nk   

ChnCharInfo.dll 用于获取首字母

文件夹中的压缩包为官方包,包括日文、繁体等 。 用法一样

用哪个就安装到 C:\Program Files (x86)\Microsoft Visual Studio International Pack 文件夹下 

安装完会出现对应的文件夹,拿到.dll结尾的 放入项目的bin文件夹中

官方地址移步---->https://www.microsoft.com/zh-cn/download/details.aspx?id=15251

根据汉子获取拼音

先将 ChnCharInfo.dll 放入项目的bin文件夹中

在程序中引入@using Microsoft.International.Converters.PinYinConverter

 

复制代码
@using System;
@using Microsoft.International.Converters.PinYinConverter

1    public class SurNAME
 2     {
 3         public string name { get; set; }
 4         public string pinying { get; set; }
 5     }
 6     /// <summary> 
 7     /// 汉字转化为拼音首字母
 8     /// </summary> 
 9     /// <param name="str">汉字   赵钱孙里王</param> 
10     /// <returns>首字母 </returns> 
11     public static List<SurNAME> GetFirstPinyin(string str)
12     {
13         List<SurNAME> surnamelist = new List<SurNAME>();
14         foreach (char obj in str)
15         {
16             SurNAME surname = new SurNAME();
17             try
18             {
19                 ChineseChar chineseChar = new ChineseChar(obj);
20                 string t = chineseChar.Pinyins[0].ToString();
21                 surname.name = obj.ToString();
22                 surname.pinying= t.Substring(0, 1);
23             }
24             catch
25             {
26                 surname.name = obj.ToString();
27             }
28             surnamelist.Add(surname);
29         }
30         return surnamelist;
31     }
复制代码

直接调用  var PyList=GetFirstPinyin("赵钱孙李王");

 

程序使用实例

 

数据库:mysql

需求:按数据表中的 姓名 添加首字母列

ID 主键

NAME 姓名

FIRSTNAME首字母

复制代码
 1 var SUBNAMELIST = Repository.Current.ExecuteQuery(String.Format("select distinct left(NAME, 1)NAME from {0}_table1 where  FIRSTNAME is  null", Repository.Current.Name),CommandType.Text).ToList();//数据表中没有首字母的姓
 2         if (SUBNAMELIST.Count != 0)
 3         {//首字母为空的数据  查出的数据为去重后姓名的姓

 4             var SUBNAME = "";
 5             foreach (var item in SUBNAMELIST)
 6             {
 7                 SUBNAME += item["NAME"];//例:赵钱孙李
 8             }
 9             var First = GetFirstPinyin(SUBNAME);//调用转拼音的方法

10             var SqlSet = "(case left(NAME, 1)   ";//拼接修改的sql语句 会将表中首字母列为空的数据修改

11             var SqlWhere = "  find_in_set(left(NAME,1),'";
12             foreach (var surnamelist in First)
13             {
14                 SqlSet += "  when '" + surnamelist.name + "' then  '" + surnamelist.pinying + "'";
15                 SqlWhere += surnamelist.name + ",";
16             }
17             SqlSet += " end )";
18             SqlWhere += " ') ";
19             var upsql = string.Format("update  {0}_table1 set FIRSTNAME={1}  where  FIRSTNAME is  null  AND  {2} ", Repository.Current.Name, SqlSet, SqlWhere);
20             Repository.Current.ExecuteNonQuery(upsql, CommandType.Text);//执行sql
21         };
复制代码

相关教程