中文转拼音without CJK

简介: Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) 。 于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是。。。。自己写了一个硬枚举的中文转拼音的类。 原理是这样的: public class PinYinUtils { private st...

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

 

目录
相关文章
|
缓存 中间件 测试技术
【基础理论-中间件测试】引入中间件
【基础理论-中间件测试】引入中间件
1170 93
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在图像识别中的应用
本文将探讨深度学习在图像识别领域的应用。通过分析卷积神经网络(CNN)的原理和结构,我们将了解如何利用深度学习技术进行图像识别。同时,我们还将讨论一些常见的深度学习框架和工具,以及它们在图像识别中的实际应用。最后,我们将展望深度学习在图像识别领域的未来发展趋势。
|
设计模式 Java C++
【C++高阶(八)】单例模式&特殊类的设计
【C++高阶(八)】单例模式&特殊类的设计
|
存储 程序员 数据库
数据库系统概论学习 1 绪论
数据库系统概论学习 1 绪论
274 0
数据库系统概论学习 1 绪论
|
缓存 安全 应用服务中间件
Nginx 反向代理
Nginx反向代理概述 关于正向代理和反向代理,我们在前面的章节已经通过一张图给大家详细的介绍过了,简而言之就是正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者之间最大的区别。 Nginx既可以实现正向代理,也可以实现反向代理。 我们先来通过一个小案例演示下Nginx正向代理的简单应用。 先提需求: (1)服务端的设置: http { log_format main 'client send request=>clientIp=$remote_addr serverIp=>$host'; server{ listen 80; server_name lo
206 1
|
设计模式 前端开发 数据管理
员工入职管理系统|员工管理系统|基于SpringBoot+Vue的企业新员工入职系统
员工入职管理系统|员工管理系统|基于SpringBoot+Vue的企业新员工入职系统
238 0
|
网络协议 Java 网络安全
OushuDB 安装与升级之命令行安装准备(下)
OushuDB 安装与升级之命令行安装准备(下)
171 0
|
关系型数据库 MySQL 数据库连接
Koa的上层框架egg.js的学习
Koa的上层框架egg.js的学习
|
SQL 缓存 关系型数据库
通过开源Flink读写云原生数据仓库AnalyticDB PostgreSQL
本文介绍如何通过开源Flink版实时读写云原生数据仓库AnalyticDB PostgreSQL(以下简称ADB PG版,原分析型数据库PostgreSQL版)数据,包括版本限制、网络要求、操作步骤、类型映射和参数支持等。
1388 0