zoukankan      html  css  js  c++  java
  • 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 };
  • 相关阅读:
    Redis 持久化总结
    Redis 持久化
    redis.conf的详细说明:
    linux 下 redis 安装
    redis 简介
    小心,Nginx 上传文件大小有限制!
    PSP总结报告
    作业20181204-1 每周例行报告
    对团队成员公开感谢博客
    作业20181127-2 每周例行报告
  • 原文地址:https://www.cnblogs.com/liangweitao/p/11677324.html
Copyright © 2011-2022 走看看