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 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# 汉字获取拼音首字母,给数据库中的姓名添加首字母的更多相关文章
- php根据汉字获取拼音(php基于拼音搜索实现原理)
php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8 <?php function getfirstchar($s0){ //获取单个汉 ...
- 用SQL语句创建和删除Access数据库中的表;添加列和删除列
用SQL语句创建和删除Access数据库中的表;添加列和删除列 Posted on 2009-08-11 13:42 yunbo 阅读(1240) 评论(0) 编辑 收藏 用SQL语句创建和删除Acc ...
- ORACLE数据导入导出后新数据库中某些表添加操作报错[ORA-12899]
由于项目需要,我在搭建了新的开发环境后,需要将之前环境中的ORACLE数据库导出,再导入到新的开发环境下.当导出导入完成后,使用数据库进行添加操作时 发现针对很多表的添加操作报错,具体报错原因描述为: ...
- MYSQL 传汉字获取拼音首字母
--获取单个汉字首字母拼音 --CREATE DEFINER=`by`@`%` FUNCTION `fun_first_pinyin`(`P_NAME` VARCHAR(5)) RETURNS var ...
- 获取手机通讯录放入PinnedSectionListView中,按名字首字母排序,并且实现拨打电话功能。
package com.lixu.tongxunlu; import java.util.ArrayList; import com.lixu.tongxunlu.PinnedSectionListV ...
- 关于java中实现在oracle数据库中实现对中文首字母进行排序的解决方案
首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICAL_M ...
- mysql 随机获取数据并插入到数据库中
insert into result (user_id, activity_id, number) select user_id, activity_id from `activity_record` ...
- JavaScript 汉字与拼音互转终极方案 附JS拼音输入法
转:http://www.codeceo.com/article/javascript-pinyin.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的 ...
- 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字 ...
随机推荐
- Python从零开始——安装与运行
- Linux服务之DNS介绍
DNS-------Domain Name System域名系统 介绍:DNS就是把域名和IP地址联系在一起的服务,有了DNS服务器,你就不用输入IP地址来访问一个网站,可以通过输入网址访问. ...
- <人人都懂设计模式>-装饰模式
书上,真的用一个人穿衣打拌来讲解装饰模式的呢. from abc import ABCMeta, abstractmethod class Person(metaclass=ABCMeta): def ...
- oracle在windows(含客户端工具pl/sql安装)下安装
安装Oracle服务器端 系统默认创建的数据库名称为orcl,可自行修改. 全局数据库名(用来唯一标示Oracle数据库,每个数据库至少由一个Oracle系统标识符(SID)引用),orcl,后面称为 ...
- 12-C#笔记-可空类型
区别于C++,C#定义的NULL和0不同.更严格. C#的基本类型,区分为可空和不可空 主要涉及两个符号 单问号? 双问号?? 示例如下: using System; namespace Calcul ...
- SIFT和SURF特征(草稿)
(草稿) https://www.cnblogs.com/gavanwanggw/p/7073905.html
- Ingress对外暴露端口
http,https端口 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: kubernetes-dashboard names ...
- java 补充(final、static)
final 固定的 final 修饰类的时候,只能作为子类继承,不能作为父类. final 定义变量时,必须给成员变量赋值.------ 1.直接赋值 2.构造方法. final 修饰成员方法时 ...
- Chrome DevTools的使用
一.Chrome DevTools 简介 Chrome 开发者工具是一套内置于Google Chrome中的Web开发和调试工具,可用来对网站进行迭代.调试和分析 手册:Chrome 开发者工具中文手 ...
- 渗透测试工具Nmap篇
Nmap是一款网络扫描和主机检测的非常有用的工具. Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统.Nmap ...