C# 漢字獲取拼音首字母,給數據庫中的姓名添加首字母


本方案采用微軟官方語言包

(下載鏈接: 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 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM