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从零开始——基本数据类型
- lua 根据路径获取文件名
require "lfs" function dirpath(path) for file in lfs.dir(path) do -- lfs.dir 根据路径获取该路径下的文件 ...
- 第07节-开源蓝牙协议BTStack框架代码阅读(下)
上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得). 可以从5个方面来理解BTStack的框架: 1.硬件操作:hci_transport_t BTS ...
- Python并发编程内容回顾
Python并发编程内容回顾 并发编程小结 目录 • 一.到底什么是线程?什么是进程? • 二.Python多线程情况下: • 三.Python多进程的情况下: • 四.为什么有这把GIL锁? • 五 ...
- Windbg Command Browser(命令浏览器)窗口的使用
命令浏览器窗口显示并存储调试器命令的文本结果.此窗口创建命令引用,使您可以查看特定命令的结果,而无需重新输入该命令.命令浏览器窗口还提供了对存储的命令的导航,因此您可以比使用调试器命令窗口更快地访问命 ...
- Vue 实现点击展开收起
Vue 展开收起功能实现 之前写项目的时候提到了一个需求 展开/收起 所有内容的需求 .因之前一值是重构,自己写功能还是比较少的,于是网上搜了一下,发现很多东西其实是jq的功能 虽然可以拿过来用,但是 ...
- 链接指示:extren"C"
C++程序有时需要调用其他语言编写的函数,最常见的是调用C语言编写的函数.像所有其他名字一样,其他语言中的函数名字也必须在C++中进行声明,并且该声明必须指定返回类型和形参列表.对于其他语言编写的函数 ...
- A 题解————2019.10.16
[题目描述] 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) ,其中每个正整数都能表示成两个质数乘积. [输入描述]第一行一个正整数 q,表示询问组数.接下来 q 行,每行一 ...
- C语言博客作业2019-04--数组
0.展示PTA总分(0----2) 展示3张关于"数组题目集"分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理数组这章学习主要知识点,必须包含内容有: 数组中如何查 ...
- Apache的代理服务器的配置 (正向代理 ,反向代理,轮询调度)
一. 代理服务器的了解1.代理服务器 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自 ...