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

java获取汉子首字母

阅读更多

    public class StringUtil {
//private static Log logger = LogFactory.getLog(StringUtil.class);
//国标码和区位码转换常量

static final int GB_SP_DEFF = 160;
//存放国标一级汉字不同读音的起始区位码

  static final int[] secPosvalueList = {
   1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787,
   3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086,
   4390, 4558, 4684, 4925, 5249, 5600
  };
//存放国标一级汉字不同读音的起始区位码对应读音
static final char[] firstLetter = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
    't', 'w', 'x', 'y', 'z'};
//获取一个字符串的拼音码
public static String getFirstLetter(String oriStr) {
String str = oriStr.toLowerCase();
StringBuffer buffer = new StringBuffer();
char ch;
char[] temp;
for (int i = 0; i < str.length(); i++) { //依次处理str中每个字符
ch = str.charAt(i);
temp = new char[] {ch};
byte[] uniCode = new String(temp).getBytes();
if (uniCode[0] < 128 &amp;&amp; uniCode[0] > 0) { // 非汉字
  buffer.append(temp);
  } else {
  buffer.append(convert(uniCode));
  }
  }
  return buffer.toString();
}
  /** 获取一个汉字的拼音首字母。
   * GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码
    * 例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43
    * 0x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’
    */
static char convert(byte[] bytes) {
 
  char result = '-';
 
  int secPosValue = 0;
 
  int i;
 
  for( i =0; i < bytes.length; i++) {
  
   bytes[i] -= GB_SP_DEFF;
  }
 
  secPosValue = bytes[0] * 100 + bytes[1];
 
  for ( i = 0; i<23; i++) {
  
   if(secPosValue >= secPosvalueList[i] &amp;&amp; secPosValue <secPosvalueList[i+1]) {
   
    result = firstLetter[i];
   
    break;
   }
  }
  return result;
}

public static void main(String[] args) {
  System.out.println(StringUtil.getFirstLetter("白金"));
}
}
 
0
2
分享到:
评论
3 楼 smilea001 2013-11-05  
我知道了,作者采用的是gbk编码,我采用的是utf-8编码,
2 楼 smilea001 2013-11-05  
我输入的也是--
1 楼 rolenz 2012-02-07  
if (uniCode[0] < 128 &amp;&amp; uniCode[0] > 0) { // 非汉字
if(secPosValue >= secPosvalueList[i] &amp;&amp; secPosValue <secPosvalueList[i+1]) {

这两行中&amp;&amp;应该是&&吧。
随便试了几个中文字,输出结果都是--
System.out.println(StringUtil.getFirstLetter("白金"));

输出结果:--

相关推荐

    java获取汉字的首字母

    Java获取汉字的首字母是一项常见的文本处理任务,尤其在数据编码、搜索引擎优化或者拼音排序等场景下非常有用。本文将详细讲解如何利用Java实现这一功能,并探讨相关知识点。 首先,我们要明白汉字首字母的获取主要...

    java根据中文获取拼音字母代码

    有时候可能会有获取中文拼音这样的需求...但如果仅仅是想获取中文拼音的首字母,查询数据库可能就显得过于臃肿了,通过重新思考之后,我们会利用汉字编码顺利来解决这样的一个问题。这里将这种方式的java实现分享给大家

    Java中获取GBK编码汉字的拼音首字母

    获取GBK字的拼音的首字母 由于数据较大,完整的GBK编码表按GBK规范分成3部分 GBK/2为与GB2312兼容的国标汉字部分,GBK/3和GBK/4为扩展汉字部分 每一部分都有自己的地址计算公式 若输入是acsii则返回同样的acsii ...

    汉字字符串转化为拼音首字母缩写(限常用字)的小程序与源码(VC++)

    通过这个VC++小程序,开发者可以获得处理汉字到拼音首字母的基础,为进一步的文本处理和数据分析任务打下基础。同时,这也是学习汉字拼音转换技术的一个良好起点,特别是对于那些对C++编程和中文信息处理感兴趣的...

    Java名字获取拼音

    在"java获取汉子拼音"的压缩包文件中,很可能包含了更多关于如何使用pinyin4j进行汉字拼音转换的示例代码。通过学习和理解这些示例,你可以更好地掌握这个库,并在实际项目中灵活应用。 总结起来,Java名字获取拼音...

    java 汉子转拼音例子

    System.out.println("汉字: " + c + ", 首字母: " + pinyinArray[0].charAt(0) + ", 全拼: " + pinyinArray[0]); } } } } ``` - 这段代码会输出“汉字”的每个字符的拼音首字母和全拼。 3. **汉字转拼音的...

    将汉字转换成拼音 java 源码

    - 提供两个静态方法`getFirstLettersUp()`和`getFirstLettersLo()`分别用于获取大写和小写的拼音首字母。 #### 5. 异常处理 - 当设置的拼音输出格式组合不合理时,会抛出`BadHanyuPinyinOutputFormatCombination`...

    JAVA中汉字字符转化为英文字符

    此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr` 和 `nuToTrueAsciiStr`,我们将探讨其实现原理及其应用场景。 #### 核心知识点详解 ##### 1. 字符编码基础...

    A-Z字母排序和过滤搜索功能

    然后可以使用Java的`Collections.sort()`方法,提供自定义比较器(Comparator)来根据拼音首字母进行排序。 4. **显示A-Z分组**:为了展示A-Z分组,可以创建一个额外的ArrayList来存储每个字母及其对应的元素列表。...

    Java总结的一些工具类

    会用到的工具类 MD5加密、定时任务、分页、获取ip地址、汉子首字母全拼、获取指定路径文件列表、日期、生成随机名字、微信消息加密等 持续更新中...

    java中实现汉字按照拼音排序(示例代码)

    对于繁体字的拼音排序,可能需要引入第三方库,如`pinyin4j`,来获取汉字的准确拼音并进行比较。 总结来说,Java中的`Collator`类为我们提供了方便的中文字符串排序功能,但对于繁体字或特定的排序需求,可能需要...

    Android汉字转拼音

    不过要注意,由于Pinyin4J是基于Java的,因此在Android上使用时可能需要处理一些兼容性问题,比如避免使用Java 8以上的新特性。在实际项目中,还应考虑性能优化,比如缓存已转换的拼音,避免重复计算。

    以上的汉字转化为全拼或拼音的第一个字符

    在Java编程语言中,处理汉字转化为全拼或拼音首字母是一项常见的需求,特别是在文本处理、搜索引擎优化(SEO)以及中文信息处理等领域。本篇将详细讲解如何实现这一功能,主要涉及以下几个知识点: 1. **汉字编码与...

    android联系人字母排序和搜索

    我们可以创建一个HashMap来存储每个分段的起始位置,然后遍历排序后的联系人列表,根据首字母添加到对应分段。 ```java HashMap, Integer&gt; sectionMap = new HashMap(); for (int i = 0; i (); i++) { cursor....

Global site tag (gtag.js) - Google Analytics