`

java 获取汉字拼音首字母

    博客分类:
  • java
阅读更多

在项目中要更能根据某些查询条件(比如姓名)的首字母作为条件进行查询,比如查一个叫“张三”的人,可以输入‘zs'


public class test1 { 
    // 简体中文的编码范围从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();
       System.out.println("SourceStr:"+SourceStr);
       int i; 
       try { 
           for (i = 0; i < StrLength; i++) { 
                Result += Char2Initial(SourceStr.charAt(i)); 
            } 
       } catch (Exception e) { 
            Result = ""; 
        } 
        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("梅阳")); 
    } 
}

分享到:
评论

相关推荐

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

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

    java提取汉字拼音首字母

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

    java获取汉字拼音首字母

    通过输入汉字获取汉字拼音首字母 很好用的奥

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

    ### Java 实现提取汉语字符串各汉字拼音首字母并大写 在Java中实现提取汉语字符串各汉字拼音首字母并将其转换为大写是一项常见的需求,尤其是在处理中文文本数据时。本篇文章将详细介绍如何通过Java代码来实现这一...

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

    ### 知识点详解:Java程序获取汉字拼音首字母 #### 核心概念与功能解析 在本Java程序中,核心目标是实现对输入的汉字进行处理,提取其拼音的首字母。这在多种场景下都非常有用,比如中文姓名的拼音缩写、中文...

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

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

    java中汉字得到首字母大写

    - 技术细节:利用GB2312编码获取汉字的二进制表示,再根据这些值映射到预设的拼音首字母表中。 2. **字符串操作** - 字符串遍历:遍历输入字符串中的每个字符,逐个进行转换。 - 异常处理:对于非中文字符或无法...

    oracle获取汉字拼音和拼音首字母的功能函数

    总的来说,Oracle中获取汉字拼音和拼音首字母涉及了字符编码、Java编程、自定义函数、第三方工具等多个方面。开发者可以根据具体的需求和环境,选择合适的方法来实现这一功能。在处理过程中,要注意字符集的兼容性、...

    安卓获取汉字拼音首字母工具类封装

    "安卓获取汉字拼音首字母工具类封装"就是一个这样的解决方案,它提供了一种便捷的方式来处理汉字与拼音之间的转换,以适配与IndexBar-master这种通讯录开源控件的配合使用。 首先,我们要理解工具类在编程中的作用...

    java获取汉字的首字母

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

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

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

    oracle获取汉字拼音首字母

    ### Oracle 获取汉字拼音首字母 在Oracle数据库中实现获取汉字拼音首字母的需求,通常涉及到对中文字符的处理以及拼音转换的技术。这样的功能可以应用于多种场景,例如数据排序、索引建立或是快速检索等。本文将...

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

    汉语拼音是用拉丁字母表示汉字发音的一种方式,全拼是每个汉字对应的完整拼音,而首字母则是每个汉字拼音的首个字母,通常用于制作简化的关键词索引。在Java中,我们可以利用开源库或者自定义算法来实现这个功能。 ...

    获取汉字拼音码首字母的工具类

    在本篇文章中,我们将详细探讨一个专门用于提取汉字拼音首字母的Java工具类——`StringUtil`。此工具类的核心功能是将输入的字符串中的每个汉字转换为其对应的拼音首字母,并返回一个由这些首字母组成的字符串。这一...

    取汉字拼音首字母的Demo

    在Android和Java开发中,有时候我们需要处理汉字与拼音之间的转换,比如实现按汉字拼音首字母排序的功能。在给定的"取汉字拼音首字母的Demo"中,开发者可能遇到了这样的需求:用户界面显示一个ListView,其中的数据...

    获取汉字拼音首字母功能函数

    本文将深入探讨一个名为“获取汉字拼音首字母功能函数”的主题,这通常用于快速查找、排序或者创建关键词。这个功能的实现通常涉及到汉字到拼音的转换,并进一步提取拼音的首字母。 首先,我们需要理解汉字到拼音的...

    java提取汉字首字母

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

    Java,获取汉字拼音、部首、笔画、笔画数目源文件、源码

    以下是一个简单的示例,展示如何使用Pinyin4j获取汉字拼音: ```java import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; ...

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

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

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

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

Global site tag (gtag.js) - Google Analytics