`
JasonChi
  • 浏览: 94800 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 拼音首字母搜索功能(转)

阅读更多
/**
 * @author gnuhpc email: warmbupt@gmail.com blog: http://gnuhpc.info
 * @date 2010-1-22
 * @bugs 不支持多音字处理
 */
public class PinyinConv {
    // 简体中文的编码范围从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 = "";
        }
        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 楼 kimble 2011-05-29  
这个没有解决多音字的问题哦

相关推荐

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

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

    详解java 拼音首字母搜索内容功能的示例

    详解 Java 拼音首字母搜索内容功能的示例 Java 拼音首字母搜索内容功能是一种常见的搜索方式,用户可以通过输入汉字或汉字的首字母来搜索相关内容。在本文中,我们将通过示例代码介绍如何实现 Java 拼音首字母搜索...

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

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

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

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

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

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

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

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

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

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

    java提取汉字拼音首字母

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

    Qt拼音首字母过滤搜索

    "Qt拼音首字母过滤搜索"是一个常见的功能,它提高了用户在应用中查找和筛选数据的效率。这个功能允许用户通过输入中文词语的首字母来快速定位和选择目标内容,常见于列表(list)或树(tree)型的控件中。 Qt是一个跨...

    java中汉字得到首字母大写

    本文介绍了一种在Java中将汉字转换为其拼音首字母大写的方法。这种方法主要依赖于预定义的拼音首字母映射表以及对每个汉字GB2312编码的处理。该技术不仅适用于中文姓名的处理,还可以扩展到其他需要将中文转换为拼音...

    java中文转拼音

    本文介绍了一个简单的Java类`ChineseToEnglish`,它能够将中文字符转换为对应的拼音或拼音首字母。 #### 类结构与功能 `ChineseToEnglish`类主要负责中文到拼音的转换工作,其内部维护了一个`LinkedHashMap`类型的...

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

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

    提供汉字、拼音、拼音首字母的模糊查询(匹配左侧)

    以上就是关于"提供汉字、拼音、拼音首字母的模糊查询(匹配左侧)"这一功能的详细解释,涵盖了从用户界面设计到后端算法实现的整个流程。通过这样的功能,用户能够快速高效地在大量的中文数据中找到所需的信息。

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

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

    java提取中文的拼音首字母

    根据输入的中文名称,把每个中文名称的拼音首字母提取出来,组合成新的大写字符串。如输入“刘德华”则转换过后得到的是“LDH”。还有我们在用酷我或者其它的搜索工具的时候,当输入“l”的时候下拉列表框中就出现了...

    delphi 汉字转拼音首字母含生僻字

    在IT行业中,Delphi是一...使用者可以参考这个文件来学习如何在自己的Delphi项目中实现汉字转拼音首字母的功能,包括处理生僻字的策略。在使用或改编这段代码时,需要注意版权和许可问题,确保符合开源软件的使用规范。

    sql 按拼音首字母排序

    本文将深入探讨如何利用SQL实现按拼音首字母进行排序的功能,这是一个对于处理中文数据尤其有用的技术点。通过解析提供的代码片段,我们将了解其工作原理、适用场景以及可能的优化方向。 ### SQL拼音排序功能概述 ...

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

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

    oracle拼音首字母查询

    Oracle拼音首字母查询是一种在Oracle数据库中实现对汉字进行拼音首字母检索的技术。在中文环境中,为了方便用户根据汉字的拼音首字母进行快速查找,这种查询方式尤其有用。Oracle数据库虽然原生支持英文字符集,但...

Global site tag (gtag.js) - Google Analytics