`

取汉字首母

阅读更多
  [color=red]//c#版本[/color]
   public class GetChineseFirstNum
    {
        //获取汉字首字母
        public static string GetChineseSpell(string strText)
        {
            int len = strText.Length;
            string myStr = "";
            for (int i = 0; i < len; i++)
            {
                myStr += getSpell(strText.Substring(i, 1));
            }
            return myStr;
        }

        private static string getSpell(string cnChar)
        {
            byte[] arrCN = Encoding.Default.GetBytes(cnChar);
            if (arrCN.Length > 1)
            {
                int area = (short)arrCN[0];
                int pos = (short)arrCN[1];
                int code = (area << 8) + pos;
                int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };
                for (int i = 0; i < 26; i++)
                {
                    int max = 55290;
                    if (i != 25) max = areacode[i + 1];
                    if (areacode[i] <= code && code < max)
                    {
                        return Encoding.Default.GetString(new byte[] { (byte)(65 + i) });
                    }
                }
                return "*";
            }
            else
            {
                return cnChar;
            }
        }
    }


  


[color=red]   //  java 版本[/color]
  public class Test {
	// 字母Z使用了两个标签,这里有27个值
	// i, u, v都不做声母, 跟随前面的字母
	private char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈',
			'击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒', '塌', '塌', '塌',
			'挖', '昔', '压', '匝', '座' };

	private char[] alphatable = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',

	'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
			'Y', 'Z' };

	private int[] table = new int[27];

	// 初始化
	{
		for (int i = 0; i < 27; ++i) {
			table[i] = gbValue(chartable[i]);
		}
	}

	// 主函数,输入字符,得到他的声母,
	// 英文字母返回对应的大写字母
	// 其他非简体汉字返回 '0'

	public char Char2Alpha(char ch) {

		if (ch >= 'a' && ch <= 'z')
			return (char) (ch - 'a' + 'A');
		if (ch >= 'A' && ch <= 'Z')
			return ch;

		int gb = gbValue(ch);
		if (gb < table[0])
			return '0';

		int i;
		for (i = 0; i < 26; ++i) {
			if (match(i, gb))
				break;
		}

		if (i >= 26)
			return '0';
		else
			return alphatable[i];
	}

	// 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串
	public String String2Alpha(String SourceStr) {
		String Result = "";
		int StrLength = SourceStr.length();
		int i;
		try {
			for (i = 0; i < StrLength; i++) {
				Result += Char2Alpha(SourceStr.charAt(i));
			}
		} catch (Exception e) {
			Result = "";
		}
		return Result;
	}

	private boolean match(int i, int gb) {
		if (gb < table[i])
			return false;

		int j = i + 1;

		// 字母Z使用了两个标签
		while (j < 26 && (table[j] == table[i]))
			++j;

		if (j == 26)
			return gb <= table[j];
		else
			return gb < table[j];

	}

	// 取出汉字的编码
	private int gbValue(char ch) {
		String str = new String();
		str += ch;
		try {
			byte[] bytes = str.getBytes("GB2312");
			if (bytes.length < 2)
				return 0;
			return (bytes[0] << 8 & 0xff00) + (bytes[1] & 0xff);
		} catch (Exception e) {
			return 0;
		}

	}

	public static void main(String[] args) {
		Test obj1 = new Test();
 
		System.out.println(obj1.String2Alpha("刘"));
                   // return L 		
 
	}

}

分享到:
评论

相关推荐

    最常用的1000个汉字(简体表).doc

    奇管类未朋且婚台夜青北队久乎越观落尽形影红爸百令周吧识步希亚术留市半热送兴造谈容极随演收首根讲整式取照办强石古华諣拿计您装似足双妻尼转诉米称丽客南领节衣站黑刻统 (五)排名 501-631 的汉字:这些汉字的...

    中文免拆分輸入法

    次碼 ,BC取首碼 ) A1 A2 B1 C1 'J': (台北市),, 'u'(前),'m'(後)-&gt;只取二字 &lt;br/&gt; 四字以上詞ABCD: 前三字及末尾字各取首碼 加 'K'鍵(五字以上加'L') A1 B1 C1 D1 'K': 心想事成 ,, ctrl(前),...

    word.txt 常见的3756个汉字

    ### 常见的3756个汉字分析 #### 概述 本文旨在通过分析一个包含大约3756个常见汉字的数据集,探讨这些汉字在神经网络训练中的应用价值及其对自然语言处理(NLP)技术的重要性。数据集中包含了从日常生活中广泛使用...

    _高一语文12月月考试题无答案.doc

    8. 现代文阅读部分探讨了《孔雀东南飞》中焦母与兰芝矛盾的深层原因,指出焦母的行为可能源于个人情感而非维护封建礼教,这需要学生理解文本并进行深入分析。 总的来说,这份试题全面检验了学生对高中语文基础知识...

    甘肃省民勤县第一中学2020学年高一语文上学期第二次月考试题.doc

    5. **句式结构**:包括判断句(如“是造物者之无尽藏也”)、疑问句(如“而今安在哉”)、被动句(如“为仲卿母所遣”)和倒装句(如“月出于东山之上”)。 6. **文言文翻译**:文言文翻译注重准确性,例如“固知...

    五笔学习资料.doc

    - **四级23个**(键名+一、二、末笔)| 文:yygy 母:xnny | 廿:aghg 辛:uygh | #### 五、双字词组 - **输入方法**:分别输入两个汉字的第一字根和第二字根。如:“顾客”键入“DBPT”。 - **特殊情况处理**: ...

    广东省云浮市郁南县片区三七年级历史上学期期中联考试题(答案不全)(新版)新人教版 试题.doc

    19. **汉字的演变**:现代汉字的源头是甲骨文。 20. **青铜器**:图中所示的司母戊鼎是目前发现的最大青铜器。 21. **儒家思想**:图中主张“民贵君轻”的代表人物是孟子。 22. **都江堰**:余秋雨笔下的“它”指...

    中考历史复习资料全.doc

    元谋人、人和山顶洞人都使用石器,但山顶洞人掌握了人工取火技术,并开始使用磨制石器。 2. **新石器时代的氏族村落**:河姆渡文化和半坡文化分别代表长江流域和黄河流域的文明,他们都使用磨制石器,且掌握了水稻...

    2017秋六年级语文上学期期中试卷63无答案苏教版

    3. 查字典方法:介绍了“魁”字的查字法,包括音序查字法和部首查字法,以及字义选择,例如“魁梧”中的“魁”取义为“高大”。 4. 词语搭配与成语运用:提供了不同类型的成语,如“心惊肉跳”、“虎背熊腰”等,...

    日语二级文法问题集-----

    12) “しだい”表示“取决于...”,正确搭配是“本人的努力”。 13) “あげく”常用于表示不幸或矛盾的结果,适合描述与父母吵架后的后果。 14) “うえでの”表示深思熟虑后的结果,适合表达决定做电影导演的过程...

    (人)版6年级上学期历史知识点归纳整理.doc

    - 山顶洞人:同样位于北京周口店,距今约3万年,掌握了人工取火技术,会磨光和钻孔,制造骨针和项链,标志着氏族社会的出现。 2. **原始的农耕生活**: - 河姆渡文化:位于长江流域,约7000年前,居民种植水稻,...

    户外广告宣传录音范文.docx

    这篇文档实际上是一份收集了各种创意广告文案的合集,主要特点是运用了中文谐音和双关语来吸引人们的注意力。这些广告文案广泛应用于户外广告、产品宣传、品牌标语等,旨在通过巧妙的文字游戏和幽默感提升品牌的知名...

    疯狂五笔输入法

    md母=母m+丶d md免=免m+刀d me卯=卯m+卩e mh马=马m+一h mi面=面m+厂i mk皿=皿m+冖k mk目=目m+口k ml麻=麻m+林l mp毛+毛m+丿p mq民=民m+七q mu末=末m+丨u mw麦麥=麦m+攵w my美=美m+羊y mz眉冒 N no女你 na乃=...

Global site tag (gtag.js) - Google Analytics