`
wandejun1012
  • 浏览: 2738308 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java汉字首字母

    博客分类:
  • java
 
阅读更多

 

public class PinYin2Abbreviation {

	// 简体中文的编码范围从B0A1(45217)一直到F7FE(63486)
	private static int BEGIN = 45217;
	private static int END = 63486;

	// 按照声 母表示,这个表是在GB2312中的出现的第一个汉字,也就是说“啊”是代表首字母a的第一个汉字。
	// i, u, v都不做声母, 自定规则跟随前面的字母
	private static char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈', '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', };

	// 二十六个字母区间对应二十七个端点
	// GB2312码汉字区间十进制表示
	private static int[] table = new int[27];

	// 对应首字母区间表
	private static char[] initialtable = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 't', 't', 'w', 'x', 'y', 'z', };

	// 初始化
	static {
		for (int i = 0; i < 26; i++) {
			table[i] = gbValue(chartable[i]);// 得到GB2312码的首字母区间端点表,十进制。
		}
		table[26] = END;// 区间表结尾
	}

	// ------------------------public方法区------------------------
	// 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 最重要的一个方法,思路如下:一个个字符读入、判断、输出

	public static String cn2py(String SourceStr) {
		String Result = "";
		int StrLength = SourceStr.length();
		int i;
		try {
			for (i = 0; i < StrLength; i++) {
				Result += Char2Initial(SourceStr.charAt(i));
			}
		} catch (Exception e) {
			Result = "";
			e.printStackTrace();
		}
		return Result;
	}

	// ------------------------private方法区------------------------
	/**
	 * 输入字符,得到他的声母,英文字母返回对应的大写字母,其他非简体汉字返回 '0'   *   
	 */
	private static char Char2Initial(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 < BEGIN) || (gb > END))// 在码表区间之前,直接返回
		{
			return ch;
		}
		int i;
		for (i = 0; i < 26; i++) {// 判断匹配码表区间,匹配到就break,判断区间形如“[,)”
			if ((gb >= table[i]) && (gb < table[i + 1])) {
				break;
			}
		}
		if (gb == END) {// 补上GB2312区间最右端
			i = 25;
		}
		return initialtable[i]; // 在码表区间中,返回首字母
	}

	/**
	 * 取出汉字的编码 cn 汉字   
	 */
	private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。
		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) throws Exception {
		System.out.println(cn2py("重庆重视发展IT行业,大多数外企,如,IBM等进驻山城"));
	}
}

 

注意到:

1.这里出来的全是小写字母,要想变成大写的话,自己toUpperCase()

2.另外,这里不能区分多音字,比如重庆,应该是c开头的,而这里解释成重了,就成z了。

 

 refurl:http://blog.csdn.net/chunlongyuan/article/details/8514147

分享到:
评论

相关推荐

    java中汉字得到首字母大写

    ### Java中实现汉字首字母转为大写的技巧与方法 #### 概述 在Java编程中,有时我们需要处理中文字符,并将其转换成特定格式。例如,我们可能希望将一个中文姓名转换成其拼音首字母的大写形式。这种需求在很多场景...

    汉字转拼音、首字母、多音字java

    在Java编程语言中,处理汉字转换为拼音、获取汉字首字母以及处理多音字的问题是一项常见的任务,尤其在中文信息处理、搜索引擎优化(SEO)或者中文输入法开发等领域。这里我们将详细探讨这些知识点。 首先,我们要...

    java提取汉字首字母

    在Java编程中,提取汉字首字母是一项常见的任务,特别是在处理汉字数据、建立索引或进行拼音搜索时。这个任务涉及到字符编码、Unicode和中文字符处理。以下是对这一知识点的详细阐述: 1. **字符编码**:汉字在...

    java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII

    以上就是关于“java汉字转拼音,android汉字转拼音,汉字转拼音首字母,汉字转ASCII”的技术要点。在实际应用中,根据需求选择合适的转换方式,并注意处理可能出现的异常情况,如多音字、非ASCII字符等。在处理大量...

    java提取汉字拼音首字母

    java提取汉字拼音首字母的代码,简体中文的编码范围从B0A1(45217)一直到F7FE(63486),不支持多音字处理

    java 取出汉语字符串各汉字拼音首字母并大写

    在Java中实现提取汉语字符串各汉字拼音首字母并将其转换为大写是一项常见的需求,尤其是在处理中文文本数据时。本篇文章将详细介绍如何通过Java代码来实现这一功能,并对相关的知识点进行深入探讨。 #### 一、需求...

    java获取汉字首字母+jar

    在Java编程语言中,处理汉字并将其转换为拼音首字母是一项常见的需求,特别是在文本处理、搜索引擎优化或数据索引等领域。这个"java获取汉字首字母+jar"的资源提供了一个解决方案,它能够处理汉字到拼音的转换,并且...

    java获取汉字的首字母

    一个常用的库是`Pinyin4j`,它是一个用于Java的中文拼音处理库,可以方便地获取汉字的全拼和首字母。 以下是一个使用`Pinyin4j`库获取汉字首字母的基本步骤: 1. **添加依赖**: 在项目中引入`Pinyin4j`库,如果是...

    java实现读取汉字的首字母

    在Java编程语言中,处理汉字并获取其首字母是一项常见的任务,特别是在中文信息处理、搜索引擎优化(SEO)或拼音输入法等场景下。这个过程通常涉及到汉字与Unicode编码的转换,因为Java内部使用Unicode来表示字符。...

    Java 获取汉字的拼音或汉字首字母

    Java 获取汉字的拼音或汉字首字母在Java中获取汉字的拼音或汉字首字母是一个有挑战性的任务,因为汉字没有像拉丁字母那样的标准编码方案。不过,有一些第三方库可以简化这个过程。汉字拼音库是一个常用的库,它可以...

    一个获得汉字拼音首字母的java程序

    该Java程序的实用价值在于,它提供了一种简便的方式,将复杂的汉字数据转换为易于处理的拼音首字母形式,这对于构建中文信息检索系统、中文姓名数据库管理、以及任何需要快速识别和排序中文文本的应用场景都极其有用...

    java汉字转拼音(全拼和首字母)

    本篇文章将深入探讨如何使用Java实现汉字转拼音的功能,包括获取汉字的全拼和首字母。 首先,我们需要理解汉字转拼音的基本原理。汉语拼音是用拉丁字母表示汉字发音的一种方式,全拼是每个汉字对应的完整拼音,而首...

    用来获取汉字首字母的jar包

    2. **基于开源库的方法**:如Pinyin4j,这是一个广泛使用的Java库,可以将汉字转换为拼音,包括声调和首字母。这个jar包可能包含了类似的功能。 3. **深度学习方法**:近年来,利用深度学习模型如RNN(循环神经网络...

    java 获取汉字拼音首字母 源码

    java 获取汉字拼音首字母 源码 /** * GB 2312-80 把收录的汉字分成两级。第一级汉字是常用汉字,计 3755 个, 置于 16~55 * 区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字, 计 3008 个,置于 56~...

    Java获取中文拼音、中文首字母缩写和中文首字母的示例

    3. **获取中文首字母并转化为大写字母**: 如果需要首字母大写,可以在获取首字母缩写的基础上进行调整。例如,将"广东省"转换为"GDS",可以在`getPinYinHeadChar`方法的基础上稍作修改,使每个首字母变为大写: ...

    java中根据汉字字符串获取拼音首字母工具类

    java中根据汉字字符串获取拼音首字母工具类

    mysql根据汉字首字母搜索

    在数据库表中没有录入汉字对应的拼音首字母的情况下,进行汉字拼音首字母搜索,下载文本后 直接在mysql中执行,后就可实现根据拼音搜索功能

    java 提取汉字的首字母、拼音

    在Java编程中,提取汉字的首字母和拼音是一项常见的需求,尤其在中文数据处理和搜索优化方面。这里我们将深入探讨如何使用Java实现这一功能,并基于提供的`pinyin4j-2.5.0.jar`库和`Pinyin.java`源码进行讲解。 `...

    Java中的输入汉字拼音首字母即自动显示数据库中相应内容

    在Java编程中,实现输入汉字拼音首字母自动显示出数据库中相应内容的功能,是常见的文本框自动补全(AutoComplete)技术的一种应用场景。这种技术通常用于提高用户输入的效率和准确性,常见于搜索引擎、输入法软件...

    一个Java的获取汉字的首字母和全拼音的类

    一个Java的获取汉字的首字母和全拼音的类

Global site tag (gtag.js) - Google Analytics