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的更多相关文章

  1. Json与javaBean之间的转换工具类

    /**  * Json与javaBean之间的转换工具类  *  * {@code 现使用json-lib组件实现  *    需要  *     json-lib-2.4-jdk15.jar  * ...

  2. 日期转换工具类 CommUtil.java

    package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...

  3. Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】

    package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...

  4. Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用

    现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行 分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物 ...

  5. java 二进制数字符串转换工具类

    java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...

  6. DensityUtil【尺寸转换工具类(px、dp互相转换)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 用于项目中dp.px.sp之间的转换以及指定缩放值下的转换. 效果图 暂不需要 代码分析 常用的方法是px2dip.dip2px: ...

  7. 【Java】字节数组转换工具类

    import org.apache.commons.lang.ArrayUtils; import java.nio.charset.Charset; /** * 字节数组转换工具类 */ publi ...

  8. Json转换工具类(基于google的Gson和阿里的fastjson)

    在项目之中我们经常会涉及到字符串和各种对象的转换,为此特地整理了一下常用的转换方法 一.基于com.google.code.gson封装的json转换工具类 1. 在pom.xml文件里面引入gson ...

  9. 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)

    Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...

随机推荐

  1. bzoj4671: 异或图——斯特林反演

    [BZOJ4671]异或图 - xjr01 - 博客园 考虑先算一些限制少的情况 gi表示把n个点的图,划分成i个连通块的方案数 连通块之间不连通很好处理(怎么处理看下边),但是内部必须连通,就很难办 ...

  2. JSTL和EL的使用

    JSTL和EL的使用 使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL标签库 在JSTL中分为以下五个标签 核心标签 格 ...

  3. Gym - 101350E Competitive Seagulls (博弈)

    There are two seagulls playing a very peculiar game. First they line up N unit squares in a line, al ...

  4. utf8的大小写敏感性测试及其修改方法

    utf8的大小写敏感性测试及其修改方法 # 测试utf8的大小写敏感性及其修改方法 -- 以下是utf8不区分大小写 # 修改数据库: ALTER DATABASE database_name CHA ...

  5. JavaJDBC整理

    1.1.1    导入驱动jar包 创建lib目录,用于存放当前项目需要的所有jar包 选择jar包,右键执行build path / Add to Build Path 前版本 package co ...

  6. Spark SQL相关总结

    1.spark 数据透视图: pivot(pivot_col, values=None) Pivots a column of the current [[DataFrame]] and perfor ...

  7. Excel 当前行高亮

    格式-条件格式-条件(公式)- =ROW()=CELL("row") 再选颜色...即可.

  8. v-charts 和 websocket实现数据展示动态推送

    v-charts https://v-charts.js.org/#/ ELEMENT力作: 在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化.修改复杂的配置项,v-charts 的出 ...

  9. webapp中绝对定位/固定定位与虚拟键盘冲突的问题

    $('body,html').height(document.body.clientHeight); 进入页面的时候就把高度固定住,这样虚拟键盘打开页面高度不会变化,你的布局也不会乱. 测试有效. 当 ...

  10. python chrome的自定义启动

    # encoding:utf-8 """@version: python27@author: fafa@site: http://www.phpgao.com@softw ...