C#编程入门--将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符

将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符

       #region 将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符
        /// <summary>
        /// 将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        public static string GetPinYin(string text)
        {
            char pinyin;
            byte[] array;
            System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length);

            foreach (char c in text)
            {
                pinyin = c;
                array = System.Text.Encoding.Default.GetBytes(new char[] { c });

                if (array.Length == 2)
                {
                    int i = array[0] * 0x100 + array[1];

                    if (i < 0xB0A1) pinyin = c;
                    else if (i < 0xB0C5) pinyin = ‘a‘;
                    else if (i < 0xB2C1) pinyin = ‘b‘;
                    else if (i < 0xB4EE) pinyin = ‘c‘;
                    else if (i < 0xB6EA) pinyin = ‘d‘;
                    else if (i < 0xB7A2) pinyin = ‘e‘;
                    else if (i < 0xB8C1) pinyin = ‘f‘;
                    else if (i < 0xB9FE) pinyin = ‘g‘;
                    else if (i < 0xBBF7) pinyin = ‘h‘;
                    else if (i < 0xBFA6) pinyin = ‘g‘;
                    else if (i < 0xC0AC) pinyin = ‘k‘;
                    else if (i < 0xC2E8) pinyin = ‘l‘;
                    else if (i < 0xC4C3) pinyin = ‘m‘;
                    else if (i < 0xC5B6) pinyin = ‘n‘;
                    else if (i < 0xC5BE) pinyin = ‘o‘;
                    else if (i < 0xC6DA) pinyin = ‘p‘;
                    else if (i < 0xC8BB) pinyin = ‘q‘;
                    else if (i < 0xC8F6) pinyin = ‘r‘;
                    else if (i < 0xCBFA) pinyin = ‘s‘;
                    else if (i < 0xCDDA) pinyin = ‘t‘;
                    else if (i < 0xCEF4) pinyin = ‘w‘;
                    else if (i < 0xD1B9) pinyin = ‘x‘;
                    else if (i < 0xD4D1) pinyin = ‘y‘;
                    else if (i < 0xD7FA) pinyin = ‘z‘;
                }

                sb.Append(pinyin);
            }

            return sb.ToString();
        }
        #endregion
时间: 2024-12-14 07:16:57

C#编程入门--将指定字符串中的汉字转换为拼音缩写,其中非汉字保留为原字符的相关文章

Java编程练习之判断Java文件名是否正确,判断邮箱格式是否正确和统计指定字符串中某字符现的次数

一判断Java文件名是否正确,判断邮箱格式是否正确 功能:判断Java文件名是否正确,判断邮箱格式是否正确.其中:合法的文件名应该以.java结尾:合法的邮箱名 中至少要包含 "@" , 并要求 "@" 在 "." 之前. 练习代码: public class Test { public static void main(String[] args) { //Java文件名 String fileName = "HelloWorld.j

Unix/Linux环境C编程入门教程(30) 字符串操作那些事儿

函数介绍 rindex(查找字符串中最后一个出现的指定字符) 相关函数 index,memchr,strchr,strrchr 表头文件 #include<string.h> 定义函数 char * rindex( const char *s,int c); 函数说明 rindex()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回.字符串结束字符(NULL)也视为字符串一部分. 返回值 如果找到指定的字符则返回该字符所在的地址,否则返回0. 范例 #include

java统计一个子串在指定字符串中出现的次数

今天查着用了用String类里的几个方法,分享下代码 题目要求:统计一个子串在指定字符串中出现的次数( 提示java字串出现了6次) 1 public class SearchSameString { 2 3 public static void main(String[] args) { 4 // 定义俩个字符串 5 String shortStr = "java"; 6 String longStr = "javasdfjavawerjavavsswetjavadfgdf

安卓获取指定字符串中的某个字符

获取指定字符串中某个字符,用 substring(int start , int end ) 这个方法 实验证明,无论中文英文数字,都是算一个长度 输出结果:

【编程题目】在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。

第 17 题(字符串):题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 思路:此题非常容易. 最开始是想开辟一块空间存储每个字符出现的次数. 但转念一想,似乎没有必要. 对每一个字符,都依次和后面的比较,若出现了两次,则检查下一个字符,遇到只出现一次的,直接输出就好了. /* 第 17 题(字符串): 题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 分析:这道题是 2006 年 google 的一道笔试题. */

【编程题目】在字符串中删除特定的字符

63.在字符串中删除特定的字符(字符串).题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”. 我的思路:先扫描第一个字符串,判断是否是第二的字符串的字符,是则跳过,记录跳过多少个,后面的不被删除的就前移. /* 63.在字符串中删除特定的字符(字符串). 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符. 例如,输入”They are s

c++实验5--统计输出字符串中(大/小写)字母个数,数字个数及其它字符个数。

一.问题及代码 /* * 文件名称: * 作 者: 杨楚莛 * 完成日期: 2016 年 5 月 3 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:统计输出字符串中(大/小写)字母个数,数字个数及其它字符个数. * 输入描述: * 问题描述: * 程序输出: * 问题分析: * 算法设计: */ #include<iostream> #include<cstdio> using namespace std; int main() { char str[50]; in

Java 练习:求指定字符串中大写字母,小写字母,其他字符分别的个数。

/* public class Test1{ public static void main(String[]args){ String s = "abcdeEFHDKEI38475 "; char a[] = s.toCharArray(); int lower = 0,upper = 0,other = 0; for(int i=0; i<a.length; i++){ if(a[i]<='z' && a[i]>='a') lower++; els

在一个字符串中,统计大写字母个数,小写字母个数,其他字符个数的四种算法

题目描述:编写程序,输出字符串中的大写字母.小写小母和其他的个数.如有一个字符串"Helle, This is A test textfile.123456, tannk you!!",则其大写字母个数:3,小写字母个数:29,其他字符个数:18. 这里提供了四种算法,第一种是我们比较好理解的,也属于硬编码问题,其他三种方法要借助JAVA语言的jdk提供的api. 方法一: <!DOCTYPE html> <html lang="en"> &