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

(下载链接: 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    public class SurNAME
{
public string name { get; set; }
public string pinying { get; set; }
}
/// <summary>
/// 汉字转化为拼音首字母
/// </summary>
/// <param name="str">汉字 赵钱孙里王</param>
/// <returns>首字母 </returns>
public static List<SurNAME> GetFirstPinyin(string str)
{
List<SurNAME> surnamelist = new List<SurNAME>();
foreach (char obj in str)
{
SurNAME surname = new SurNAME();
try
{
ChineseChar chineseChar = new ChineseChar(obj);
string t = chineseChar.Pinyins[].ToString();
surname.name = obj.ToString();
surname.pinying= t.Substring(, );
}
catch
{
surname.name = obj.ToString();
}
surnamelist.Add(surname);
}
return surnamelist;
}

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

程序使用实例

数据库:mysql

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

ID 主键

NAME 姓名

FIRSTNAME首字母

 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();//数据表中没有首字母的姓
if (SUBNAMELIST.Count != )
{//首字母为空的数据 查出的数据为去重后姓名的姓
var SUBNAME = "";
foreach (var item in SUBNAMELIST)
{
SUBNAME += item["NAME"];//例:赵钱孙李
}
var First = GetFirstPinyin(SUBNAME);//调用转拼音的方法
var SqlSet = "(case left(NAME, 1) ";//拼接修改的sql语句 会将表中首字母列为空的数据修改
var SqlWhere = " find_in_set(left(NAME,1),'";
foreach (var surnamelist in First)
{
SqlSet += " when '" + surnamelist.name + "' then '" + surnamelist.pinying + "'";
SqlWhere += surnamelist.name + ",";
}
SqlSet += " end )";
SqlWhere += " ') ";
var upsql = string.Format("update {0}_table1 set FIRSTNAME={1} where FIRSTNAME is null AND {2} ", Repository.Current.Name, SqlSet, SqlWhere);
Repository.Current.ExecuteNonQuery(upsql, CommandType.Text);//执行sql
};

C# 汉字获取拼音首字母,给数据库中的姓名添加首字母的更多相关文章

  1. php根据汉字获取拼音(php基于拼音搜索实现原理)

    php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8 <?php function getfirstchar($s0){   //获取单个汉 ...

  2. 用SQL语句创建和删除Access数据库中的表;添加列和删除列

    用SQL语句创建和删除Access数据库中的表;添加列和删除列 Posted on 2009-08-11 13:42 yunbo 阅读(1240) 评论(0) 编辑 收藏 用SQL语句创建和删除Acc ...

  3. ORACLE数据导入导出后新数据库中某些表添加操作报错[ORA-12899]

    由于项目需要,我在搭建了新的开发环境后,需要将之前环境中的ORACLE数据库导出,再导入到新的开发环境下.当导出导入完成后,使用数据库进行添加操作时 发现针对很多表的添加操作报错,具体报错原因描述为: ...

  4. MYSQL 传汉字获取拼音首字母

    --获取单个汉字首字母拼音 --CREATE DEFINER=`by`@`%` FUNCTION `fun_first_pinyin`(`P_NAME` VARCHAR(5)) RETURNS var ...

  5. 获取手机通讯录放入PinnedSectionListView中,按名字首字母排序,并且实现拨打电话功能。

    package com.lixu.tongxunlu; import java.util.ArrayList; import com.lixu.tongxunlu.PinnedSectionListV ...

  6. 关于java中实现在oracle数据库中实现对中文首字母进行排序的解决方案

    首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值     SCHINESE_RADICAL_M ...

  7. mysql 随机获取数据并插入到数据库中

    insert into result (user_id, activity_id, number) select user_id, activity_id from `activity_record` ...

  8. JavaScript 汉字与拼音互转终极方案 附JS拼音输入法

    转:http://www.codeceo.com/article/javascript-pinyin.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的 ...

  9. 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法

    前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字 ...

随机推荐

  1. Linux用户权限管理

    Linux操作系统: 多用户多任务的操作系统 用户类型分为:     管理员用户 : root     普通用户分为:系统用户/程序用户 用户相关的文件:     /etc/passwd      用 ...

  2. Linux系统运行模式介绍

    Linux运行模式 自由服务,即不需要用户独立去安装的软件服务,而是在系统安装好之后就可以直接使用的服务(内置服务). 运行模式也称为运行级别,属于linux的自有服务. 运行模式可以理解为一旦你开机 ...

  3. 【Tomcat】使用Eclipse绑定Tomcat 发布应用&&常见错误

     创建时间:6.14 一.Eclipse绑定Tomcat 步骤1:获得服务器运行环境配置,Window/Preferences/Server/Runtime Environment 步骤2:添加服务器 ...

  4. nginx docker 命令: command not found

    1. ps: command not found 使用如下命令安装 apt-get update && apt-get -y install procps 2. vim: comman ...

  5. spark基础知识三

    主要围绕spark的底层核心抽象RDD和原理进行理解.主要包括以下几个方面 RDD弹性分布式数据集的依赖关系 RDD弹性分布式数据集的lineage血统机制 RDD弹性分布式数据集的缓存机制 spar ...

  6. C实现Linux之touch命令

    Linux 的 touch 命令用来修改文件时间戳,或者新建一个不存在的文件,使用方式如下: touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名 ...

  7. 在导入pytorch时libmkl_intel_lp64.so找不到

    安装或者更新完pytorch后,运行不了,显示错误: (base) xu@xusu:~$ python Python (default, Dec , ::) [GCC ] :: Anaconda, I ...

  8. scala eval

    package com.jason case class JJ(d: Double*) object Ss { def main(args: Array[String]): Unit = { impo ...

  9. 关于JavaSE程序的小总结(不分先后顺序 后续继续补充)

    统计字符串中某个字符串出现的次数 package com.jiang.demo01; public class Demo01 { public static void main(String[] ar ...

  10. Android的开机启动流程

    1.Android的开机启动流程 Android的层次框架图,如下所示: 图片清晰地展示了Android的五层架构,从上到下依次是:应用层.应用框架层.库层.运行时层以及Linux内核层.Androi ...