当前位置: 首页 > news >正文

中文转拼音without CJK

Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) 。

于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是。。。。自己写了一个枚举的中文转拼音的类。

原理是这样的:

public class PinYinUtils
{
    private static readonly Dictionary<string, string> PinYinDict = new Dictionary<string, string>
    {

        {"", "YUAN"}
        // 等............
    };
    /// <summary>
    /// Return to the first letter
    /// </summary>
    /// <param name="word">Chinese word</param>
    /// <example>
    /// GetFirstPinyinChar("张三")
    /// will return "Z"
    /// Can be used for address book index and so on
    /// </example>
    /// <returns></returns>
    public static string GetFirstPinyinChar(string word)
    {
        if (word.Length == 0) return "#";
        var firstLetter = word[0].ToString();
        if (PinYinDict.ContainsKey(firstLetter))
        {
            return PinYinDict[firstLetter];
        }
        return firstLetter;
    }
    /// <summary>
    /// return the chinese char's pinyin
    /// </summary>
    /// <param name="chineseChar"></param>
    /// <example>
    /// GetPinYin('福')
    /// will return "FU"
    /// </example>
    /// <returns></returns>
    public static string GetPinYin(char chineseChar)
    {
        var str = chineseChar.ToString();
        if (PinYinDict.ContainsKey(str))
        {
            return PinYinDict[str];
        }
        return null;
    }
    /// <summary>
    /// Get the phonetic abbreviation for Chinese char
    /// </summary>
    /// <param name="chineseChar"></param>
    /// <example>
    /// GetShortPinYin('福')
    /// will return "F"
    /// </example>
    /// <returns></returns>
    public static string GetShortPinYin(char chineseChar)
    {
        var str = chineseChar.ToString();
        if (PinYinDict.ContainsKey(str))
        {
            var first = PinYinDict[str].FirstOrDefault();
            if (first == 0) return null;
            return first.ToString();
        }
        return null;
    }

}

 

源码:

https://github.com/chsword/PinYinUtil/blob/master/PinYinUtils.cs

 

GITHUB:https://github.com/chsword/PinYinUtil

 

相关文章:

  • Python爬虫之多进程爬取(以58同城二手市场为例)
  • webpack+react项目初体验——记录我的webpack环境配置
  • js-权威指南学习笔记19.2
  • Swift与OC混编
  • JavaWeb之文件上传、下载
  • HttpServletRequest和HttpServletResponse详解
  • shell面试难题
  • restlet入门搭建hello world
  • Vue初探
  • HTML/CSS常用的命名规则
  • Java googlecode JSON 解析示例
  • background-clip
  • Docker的常用命令-02
  • 【MongoDB】从入门到精通mongdb系列学习宝典,想学mongodb小伙伴请进来
  • SAS描述统计量
  • [Vue CLI 3] 配置解析之 css.extract
  • GitUp, 你不可错过的秀外慧中的git工具
  • Gradle 5.0 正式版发布
  • LeetCode29.两数相除 JavaScript
  • nginx 负载服务器优化
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vue 个人积累(使用工具,组件)
  • webpack入门学习手记(二)
  • 翻译:Hystrix - How To Use
  • 基于遗传算法的优化问题求解
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端临床手札——文件上传
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 实现菜单下拉伸展折叠效果demo
  • 小程序01:wepy框架整合iview webapp UI
  • 小程序测试方案初探
  • 学习笔记:对象,原型和继承(1)
  • 大数据全解:定义、价值及挑战
  • ​2021半年盘点,不想你错过的重磅新书
  • ​力扣解法汇总946-验证栈序列
  • !!java web学习笔记(一到五)
  • (a /b)*c的值
  • (黑马C++)L06 重载与继承
  • (离散数学)逻辑连接词
  • (力扣)循环队列的实现与详解(C语言)
  • (强烈推荐)移动端音视频从零到上手(上)
  • (四)Android布局类型(线性布局LinearLayout)
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • .Net core 6.0 升8.0
  • .Net IOC框架入门之一 Unity
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET企业级应用架构设计系列之开场白
  • .Net语言中的StringBuilder:入门到精通
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [20160902]rm -rf的惨案.txt
  • [Asp.net MVC]Bundle合并,压缩js、css文件