微软拼音转换工具类ChnCharInfo.dll
1.简介
之前做汉字转拼音是使用各种枚举的方式,将各种情况列举,这种方式出错的机率很大,经常对不上号。(如果你想了解更多:http://www.cnblogs.com/islands/articles/1231613.html
后来在度娘的过程中,发现了其实微软早有汉字转拼音的组件dll库,里面估计是封装了windows系统下输入法的汉字精华,所以转化过程中相对要准确的多。而我在做Xamarin.iOS的过程中,由于要对联系人进行首字母索引,因此使用到了它。
官网了解:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=15251
使用案例:http://blog.163.com/kunkun0921@126/blog/static/169204332201210735848402/
CSDN下载:http://download.csdn.net/detail/newxdlysk/4293850
2.主要功能
1)支持获取简体中文字符的常用属性:拼音,多音字,同音字,笔画数
2)繁简中文互相转化
注:虽然很方便,但检索过程中的时间消耗还是挺长的;还有就是一些存在翻译争议的地区名称会跟目前我们拼音有所出入:如广州(Canton/Guangzhuo).
3.简单使用(首字母的获取)
public string Convert (string chr)
{
try{
if (chr.Length != ) {
StringBuilder fullSpell = new StringBuilder ();
for (int i=; i<chr.Length; i++) {
bool isChineses = ChineseChar.IsValidChar (chr [i]);
if (isChineses) {
ChineseChar chineseChar = new ChineseChar (chr [i]);
foreach (string value in chineseChar.Pinyins) {
if (!string.IsNullOrEmpty (value)) {
fullSpell.Append (value.Remove(value.Length - , ));
break;
}
}
}else {
fullSpell.Append(chr[i]);
}
} return fullSpell.ToString().ToUpper();
}
}catch(Exception e){
Console.WriteLine("全拼转化出错!"+e.Message);
} return string.Empty;
} /// <summary>
/// 获取首字母
/// </summary>
public string SubFirstLetter(string chr)
{
try{
chr = chr.Substring(,);
if (chr.Length != ) {
StringBuilder fullSpell = new StringBuilder ();
for (int i=; i<chr.Length; i++) {
bool isChineses = ChineseChar.IsValidChar (chr [i]);
if (isChineses) {
ChineseChar chineseChar = new ChineseChar (chr [i]);
foreach (string value in chineseChar.Pinyins) {
if (!string.IsNullOrEmpty (value)) {
fullSpell.Append (value.Remove(value.Length - , ));
break;
}
}
}else {
fullSpell.Append(chr[i]);
}
} return fullSpell.ToString().Substring(,).ToUpper();
}
}catch(Exception e){
Log.Error("首字母转化出错!"+e.Message);
} return string.Empty;
}
}
微软拼音转换工具类ChnCharInfo.dll的更多相关文章
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- 日期转换工具类 CommUtil.java
package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...
- Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】
package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...
- Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用
现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行 分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物 ...
- java 二进制数字符串转换工具类
java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...
- DensityUtil【尺寸转换工具类(px、dp互相转换)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 用于项目中dp.px.sp之间的转换以及指定缩放值下的转换. 效果图 暂不需要 代码分析 常用的方法是px2dip.dip2px: ...
- 【Java】字节数组转换工具类
import org.apache.commons.lang.ArrayUtils; import java.nio.charset.Charset; /** * 字节数组转换工具类 */ publi ...
- Json转换工具类(基于google的Gson和阿里的fastjson)
在项目之中我们经常会涉及到字符串和各种对象的转换,为此特地整理了一下常用的转换方法 一.基于com.google.code.gson封装的json转换工具类 1. 在pom.xml文件里面引入gson ...
- 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)
Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...
随机推荐
- 尝试dapper和postgresql
大多数地方和其他数据库(MySQL)没有什么不同.只有几点要注意: 1.PostgreSQL表名和字段是区分大小写的,大小写不对会说字段不存在 2.插入Json数据时,要在字符串后面加上::json ...
- [模板] 多项式: 乘法/求逆/分治fft/微积分/ln/exp/幂
多项式 代码 const int nsz=(int)4e5+50; const ll nmod=998244353,g=3,ginv=332748118ll; //basic math ll qp(l ...
- [模板] 次短路 | bzoj1726-[Usaco2006Nov]Roadblocks第二短路
简介 所谓次短路, 顾名思义, 就是第二短路. :P 1到n的次短路长度必然产生于:1到x的最短路 + edge(x,y) + y到n的最短路 简单证明一下: 设 \(dis(i,j)\) 表示 \( ...
- CF95C Volleyball
题意翻译 给出一个图,双向边,边上有权值代表路的距离,然后每个点上有两个值,t,c,t代表能从这个点最远沿边走t,且不能在半路下来,花费是c 现在告诉你起点终点,问最少的花费 点个数1000,边个数1 ...
- Flask 构建微电影视频网站(四)
后台管理 实现后台管理系统使用flask sqlalchemy结合mysql数据库进行增删改查操作.分页的使用.路由装饰器定义.模板中变量调用.登录会话机制.上传文件.flask wtforms表单使 ...
- JMeter测试(菜鸟级,高手莫点)
干了这么多年开发,多线程测试都是自己写程序,都不知道还有JMeter这玩意,莫笑莫笑 一个简单的测试计划如下: 在[测试计划]下创建[线程组],线程组下[HTTP请求]和[查看结果树]是必须的,[HT ...
- 10.1 ES6 的新增特性以及简单语法
ES6 的新增特性以及简单语法 let 和 const 模板字符串 箭头函数 对象单体模式 es6面向对象 模块化 let 和 const 之前一直用 var 来声明变量,ES6 新增 let 和 ...
- <数据结构基础学习>(三)Part 2 队列
一.队列 Queue 队列也是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素. (排队) 队列是一种先进先出的数据结构(先到先得)FIFO ...
- 存储与服务器的连接方式对比(DAS,NAS,SAN)
存储分类简介 磁盘存储市场上,存储分类根据服务器类型分为:封闭系统的存储和开放系统的存储,封闭系统主要指大型机,AS400等服务器,开放系统指基于包括Windows.UNIX.Linux等操作系统的服 ...
- Linux设备树(三 属性)
三 属性(property) device_type = "memory"就是一个属性,等号前边是属性,后边是值.节点是一个逻辑上相对独立的实体,属性是用来描述节点特性的,根据需要 ...