以前项目中用到的取中文字符串拼音首字母方法。只支持GB2312汉字。
package cn.fiyo.base.util;
import java.io.UnsupportedEncodingException;
/**
* 取得给定汉字串的首字母串,即声母串
* <p>注:只支持GB2312字符集中的汉字</p>
*/
public final class PinYinUtils
{
private final static int[] li_SecPosValue =
{
1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472,
3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 5590
};
private final static String[] lc_FirstLetter =
{
"a", "b", "c", "d", "e", "f", "g", "h", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "w", "x", "y", "z"
};
/**
* 取得给定汉字串的首字母串,即声母串
*
* @param str 给定汉字串
* @return 声母串
*/
public static String getAllFirstLetter(String str)
{
if (str == null || str.trim().length() == 0)
{
return "";
}
String _str = "";
for (int i = 0; i < str.length(); i++)
{
_str = _str + getFirstLetter(str.substring(i, i + 1));
}
return _str;
}
/**
* 取得给定汉字的首字母,即声母
*
* @param chinese 给定的汉字
* @return 给定汉字的声母
*/
public static String getFirstLetter(String chinese)
{
if (chinese == null || chinese.trim().length() == 0)
{
return "";
}
chinese = conversionStr(chinese, "GB2312", "ISO8859-1");
if (chinese.length() > 1) //判断是不是汉字
{
int li_SectorCode = (int) chinese.charAt(0); //汉字区码
int li_PositionCode = (int) chinese.charAt(1); //汉字位码
li_SectorCode = li_SectorCode - 160;
li_PositionCode = li_PositionCode - 160;
int li_SecPosCode = li_SectorCode * 100 + li_PositionCode; //汉字区位码
if (li_SecPosCode > 1600 && li_SecPosCode < 5590)
{
for (int i = 0; i < 23; i++)
{
if (li_SecPosCode >= li_SecPosValue[i] &&
li_SecPosCode < li_SecPosValue[i + 1])
{
chinese = lc_FirstLetter[i];
break;
}
}
}
else //非汉字字符,如图形符号或ASCII码
{
chinese = conversionStr(chinese, "ISO8859-1", "GB2312");
chinese = chinese.substring(0, 1);
}
}
return chinese;
}
/**
* 字符串编码转换
*
* @param str 要转换编码的字符串
* @param charsetName 原来的编码
* @param toCharsetName 转换后的编码
* @return 经过编码转换后的字符串
*/
private static String conversionStr(String str, String charsetName, String toCharsetName)
{
try{
str = new String(str.getBytes(charsetName), toCharsetName);
}
catch (UnsupportedEncodingException ex){
System.out.println("字符串编码转换异常:" + ex.getMessage());
}
return str;
}
}
分享到:
相关推荐
java中根据汉字字符串获取拼音首字母工具类
"安卓获取汉字拼音首字母工具类封装"就是一个这样的解决方案,它提供了一种便捷的方式来处理汉字与拼音之间的转换,以适配与IndexBar-master这种通讯录开源控件的配合使用。 首先,我们要理解工具类在编程中的作用...
在Oracle数据库中,处理汉字和拼音的场景时,有时我们需要获取汉字的拼音或者拼音首字母。这在构建中文搜索引擎、数据分析或报表展示等场景中非常有用。Oracle提供了一些内置的功能函数,可以用来实现这些需求。以下...
总之,"汉字字符串拼音排序-QT、C++"这个主题涵盖了C++的字符串操作、QT的QString类、Unicode支持以及中文字符串的拼音处理技术。对于开发涉及中文内容的应用来说,掌握这些知识点是非常有价值的。
此工具类的核心功能是将输入的字符串中的每个汉字转换为其对应的拼音首字母,并返回一个由这些首字母组成的字符串。这一过程涉及到GB2312编码、汉字到拼音的映射以及算法设计等关键概念。以下是对该工具类中主要知识...
在Java编程语言中,开发一个汉字转拼音(包含首字母)的工具类是一项常见的任务,尤其是在处理中文字符串、搜索引擎优化(SEO)或者构建用户友好的URL时。这个工具类可以帮助程序将汉字转换为对应的拼音表示,同时...
总之,这个“取汉字拼音首字母工具”的源码不仅提供了一个针对Delphi语言的具体实现,更是一个涉及中文处理和自然语言处理基础问题的通用解决方案。它为开发者们展示了一条将汉字编码转换为拼音首字母的可行路径,...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...
- 拼音首字母匹配:同样需要Pinyin4j,获取汉字的首字母,构建首字母字符串,然后匹配。 3. **处理用户输入**: - 当用户在文本框中输入并按下Enter,或列表框双击/按下Enter,或按钮被点击时,启动模糊查询过程...
`getFirstLetter`函数接收一个汉字字符串,通过`PinyinHelper`类的`toHanyuPinyinStringVector`方法转换为拼音,然后返回第一个拼音的首字母。在`main`函数中,我们遍历输入字符串,对每个字符进行检查,如果是汉字...
标题和描述中的知识点主要涉及了将中文汉字转化为其对应的拼音,并从中提取出大写首字母的过程。这个过程在中文信息处理、数据标准化以及各种需要进行文本转换的应用场景中非常常见。下面,我们将深入探讨这一技术...
主要介绍了分享一段PHP制作的中文拼音首字母工具类的代码,非常的实用,代码很简单。 注: 英文的字串:不变返回(包括数字) eg .abc123 => abc123 中文字符串:返回拼音首字符 eg. 测试字符串 => CSZFC 中英混合...
给定的代码片段似乎试图通过一系列比较操作来决定输入字符串的首字母,但其逻辑并不适用于实际的汉字拼音首字母提取。代码中的条件判断如`str.CompareTo("߹")等,并未基于有效的汉字Unicode编码区间,而是使用了...
本项目聚焦于实现一个功能,即将汉字转换为它们的拼音首字母,这对于信息检索、文本处理或创建搜索引擎等应用非常有用。下面将详细介绍这个功能的实现原理以及涉及到的相关知识点。 1. **汉字转拼音**: 在Delphi...
1. **全拼与简拼**:工具包通常支持将汉字转换为完整的拼音(全拼)以及首字母缩写(简拼)。全拼提供了每个汉字的完整发音,而简拼则常用于快速输入和查找,如搜索引擎的关键词处理。 2. **声调处理**:汉语拼音有...
在日常的软件开发中,尤其是在处理中文字符串时,我们经常需要将中文转换成拼音或者提取出每个汉字的拼音首字母。这在排序、检索等方面非常有用。下面我们将深入分析一个在VB.NET中实现的拼音首字母提取方法,并对其...
主要介绍了分享一段PHP制作的中文拼音首字母工具类的代码,非常的实用,代码很简单。 注: 英文的字串:不变返回(包括数字) eg .abc123 => abc123 中文字符串:返回拼音首字符 eg. 测试字符串 => ...
ccs2Pinyin : 汉字转拼音...getPinyinFirstLetter : 获取第一个汉字首字母 getPinyinFirstLetters: 获取所有汉字的首字母 getSurnamePinyin : 根据名字获取姓氏的拼音 getSurnameFirstLetter: 根据名字获取姓氏的首字母
这篇关于"C#取汉字拼音首字母DEMO,支持多音字"的主题,涉及到的是使用C#编程语言来实现一个功能,该功能能够从汉字中提取出拼音的首字母,并且能够处理多音字的情况。这对于开发一些基于汉字的搜索、排序或者信息...
通过`toHanyuPinyinInitialsString()`方法,可以快速得到每个汉字的拼音首字母,如果是多音字,返回的是所有首字母的组合。 **5. 应用场景** - 搜索优化:将汉字关键词转换为拼音首字母,可以提高搜索效率。 - 数据...