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. JarvisOJ Basic Help!!

    出题人硬盘上找到一个神秘的压缩包,里面有个word文档,可是好像加密了呢~让我们一起分析一下吧! 首先用7zip解压缩,发现是一个word文件,说什么flag被藏起来了 觉得是不是应该有什么附加的信息 ...

  2. Scrapy 框架 配置文件

    配置文件 基本配置 #1.项目名称,默认的USER_AGENT由它来构成,也作为日志记录的日志名 BOT_NAME = 'Amazon' #2.爬虫应用路径 SPIDER_MODULES = ['Am ...

  3. WC2019滚粗记

    什么?你问WC2019滚粗记在哪里? 抱歉,这篇文章鸽了. 原因? 引用神仙\(yyb\)的话. 恩,想了想还是更一点吧. Day 0 签到海星,我写了个大大的\(Cgod\)有没有人看见啊,然后被广 ...

  4. 仙人掌&圆方树学习笔记

    仙人掌&圆方树学习笔记 1.仙人掌 圆方树用来干啥? --处理仙人掌的问题. 仙人掌是啥? (图片来自于\(BZOJ1023\)) --也就是任意一条边只会出现在一个环里面. 当然,如果你的图 ...

  5. nuxt.js实战之引入jquery

    head: { title: 'nuxt', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-widt ...

  6. RQY大佬一晚报告总结

    首先基础真的很重要.今天所有学的东西,都是为明天做铺垫,(这样看好像每天都是基础)基础牢了,学东西也就一看就会的感觉吧. 其次,自学能力很重要,投入很重要.大佬说他自己也不是看一遍书就懂的,而是反复看 ...

  7. python+turtle 笔记

    用Python+turtle绘制佩琪: from turtle import * def nose(x,y):#鼻子 penup()#提起笔 goto(x,y)#定位 pendown()#落笔,开始画 ...

  8. Vue(小案例_vue+axios仿手机app)_图文列表实现

    一.前言 1.导航滑动实现   2.渲染列表信息时让一开始加载的时候就请求数据 3.根据路由的改变,加载图文的改变(实现用户访问网站时可能执行的三个操作) 二.主要内容 1.导航滑动实现: (1)演示 ...

  9. mysql 端口修改

    mysql 修改端口 1.  停止mysql服务 2.  打开文件夹下my.ini文件.(E:\mysql-5.7-3307) 修改文件中的port值,注意两个地方: [client]default- ...

  10. EffectiveC++ 第6章 继承与面向对象设计

    我根据自己的理解,对原文的精华部分进行了提炼,并在一些难以理解的地方加上了自己的"可能比较准确"的「翻译」. Chapter 6 继承与面向对象设计 Inheritance and ...