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

找出汉字的首字母

    博客分类:
  • java
阅读更多
转载:
http://library.iteye.com/blog/163653
public class GB2Alpha{   
 
    private static final char[] alphatable =  
 
           {  
 
                'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',  
 
 
                'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' 
 
            };  
   
 
  /** 

     * 汉字拼音首字母编码表,可以如下方法得到:  

     * 字母Z使用了两个标签,这里有27个值, i, u, v都不做声母, 跟随前面的字母(因为不可以出现,所以可以随便取) 

     * private static final char[] chartable = 

                 { 

                '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈', 

                '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', 

                '撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', '座' 

            }; 

     *  

          private static final int[] table = new int[27]; 

       *    static 

                   { 

                     for (int i = 0; i < 27; ++i) { 

                          table[i] = gbValue(chartable[i]); 

                          System.out.print(table[i]+" "); 

                      } 

               } 

     */ 
 
    private static final int[] table = new int[]{  
 
                                45217, 45253, 45761, 46318, 46826,  
 
                                47010, 47297, 47614, 47614, 48119,  
 
                                49062, 49324, 49896, 50371, 50614,  
 
                                50622, 50906, 51387, 51446, 52218,  
 
                                52218, 52218, 52698, 52980, 53689, 54481, 55289};   
 
    public GB2Alpha() {   
 
    }  
 
 
 
    /** 

       * 主函数, 输入字符, 得到他的声母, 英文字母返回对应的大写字母 其他非简体汉字返回 '*' 

       */   
 
    public char Char2Alpha(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 < table[0])  
 
           return '*';  
 

        for(int i = 0; i < 26; ++i){  
 
              if(match(i, gb)){  
 
                      if(i >= 26)  
 
                             return '*';  
 
                      else 
 
                             return alphatable[i];  
 
               }  
 
        }  
 
        return '*';  
 
    }  
 
 
 

    /** 

     * 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 

     */ 
 
    public String String2Alpha(String str) {  
 
        String Result = "";  
 
        try {  
 
            for (int i = 0; i < str.length(); i++) {  
 
                Result += Char2Alpha(str.charAt(i));  

            }  
 
        } catch (Exception e) {  

           Result = " ";  

       }  
 
        return Result;  
 
    }  
 
 
 
    private boolean match(int i, int gb) {  
 
        if (gb < table[i])  
 
           return false;   
 
       int j = i + 1;   
 
        //字母Z使用了两个标签  
 
       while (j < 26 && (table[j] == table[i]))  
 
            ++j;  


       if (j == 26)  

           return gb <= table[j];  

       else 
 
           return gb < table[j];   

    }   
 
 
 
    /** 

     * 取出传入汉字的编码 

     */ 
 
    private static int gbValue(char ch) {  
 
        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 '*';  
 
        }   
 
    }   
 
 
 
    /** 

     * 测试输出 

     */ 
 
    public static void main(String[] args) {  
 
        GB2Alpha gb2A = new GB2Alpha();  
 
        System.out.println("拼音首字母为"+gb2A.String2Alpha("中茵股份有限公司")); 
       
 
    }  
 
}  
分享到:
评论

相关推荐

    获得汉字字符串的首字母

    4. **模糊查询**:在实现输入首字完成模糊查询功能时,可以将用户输入的首字母与存储的首字母串进行匹配,找出所有首字母匹配的记录。 在提供的文件列表中,`fGetPY.sql`可能是包含创建拼音查找表和实现此功能的SQL...

    C#获取汉字拼音的首字母

    例如,用户输入"A",程序可以找出所有以"A"开头的拼音首字母的汉字。 4. **优化与性能**:如果处理大量数据,可能需要考虑缓存转换结果,避免重复计算。另外,对于多线程环境,需要注意同步问题。 5. **错误处理**...

    php汉字转拼音得到首字母的类

    在转换得到完整拼音后,通过对每个单词进行处理,提取出首字母。对于多音字,可能需要根据上下文确定合适的读音。 3. `handleExceptions()`:考虑到汉字转拼音过程中可能出现的异常,比如编码不支持、找不到对应...

    mysql按姓名首字母搜索.docx

    `fristPinyin`函数的主要作用是获取一个中文字符串的第一个汉字的拼音首字母。它首先通过`CONVERT`函数将中文字符转换为GBK编码格式,然后提取第一个字节的十六进制值。通过`INTERVAL`函数判断这个值在哪个汉字拼音...

    基于SQL Server的中文拼音首字母转化的程序实现.pdf

    作者分析了GBK字符集中汉字的内码表,找出了以拼音首字母a至z开头的汉字,并给出了对应关系。这种对应关系可以用来确定任意汉字的拼音首字母。 最后,文章演示了如何编写一个名为trans_initial_letter的函数来实现...

    java获取中文首字母等jar包

    Java获取中文首字母的jar包,如描述中提到的`pinyin4j-2.5.0.jar`,是Java编程领域中处理汉字拼音转换的一个重要工具。在处理中文字符时,尤其是进行数据检索、排序或者关键词提取时,将中文转化为拼音能够带来很大...

    select2中文选项通过拼音或者首字母快速定位选项.zip

    2. **首字母匹配**:用户输入首字母时,遍历所有选项的拼音数组,找出以该首字母开头的选项。如果用户输入的是完整的拼音,可以使用更复杂的匹配算法,如模糊匹配。 3. **实时更新结果**:每当用户在搜索框中输入...

    php 中文字符串首字母的获取函数分享

    4. 利用预设的汉字范围段与首字节值进行比较,找出对应的汉语拼音首字母。 5. 如果不在编码范围内,则返回false。 这个函数的局限性是它只适用于GB2312编码的中文字符串。由于现代互联网环境中文编码方式可能更为...

    AutoComboBox.rar AutoComboBox首字母检索

    4. **过滤和排序**:根据输入的首字母过滤数据源,找出所有匹配的项,并可能按某种规则(如拼音顺序)排序。 5. **虚拟化**:为了处理大量数据,可能会用到ListBox或DataGrid的虚拟化技术,只加载视口内的数据,...

    vb拼音简码及查询,拼音首字母

    在VB(Visual Basic)编程环境中,拼音简码和拼音首字母查询是一项常见的需求,尤其是在处理汉字数据时。本文将深入探讨如何在VB中实现这一功能,以帮助开发者更高效地处理汉字与拼音之间的转换。 首先,我们需要...

    EXCEL汉字转拼音带音调识别多音字首字母.xls

    恭喜发财 gōng xǐ fā cái gong-xi-fa-cai G X F C G X F C 一二三四 yī èr sān sì yi-er-san-si Y ER S S Y E S S 长颈鹿 cháng jǐng lù chang-jing-lu CH J L C J L 长大 zhǎng dà zhang-da ZH D...

    汉字转拼音C++源代码

    7. **调试技巧**:在开发和测试过程中,熟练使用调试工具如Visual Studio的调试器,可以帮助找出代码中的问题。 8. **性能优化**:对于大规模的汉字处理,性能优化是必要的。这可能包括减少内存占用、优化查找算法...

    php取得字符串首字母的方法

    如果字符是汉字(其十六进制值大于'B0'),则调用`getLetter()`函数来获取对应的拼音首字母,并打印出来。如果字符不是汉字,就直接打印原字符。 `getLetter()`函数是一个关键的辅助函数,它接收一个数字参数,该...

    Android实现字母快速索引功能

    2. **数据预处理**:获取到每个数据项的拼音后,我们需要对数据进行预处理,找出每个不同首字母的数据集合,并按照字母顺序排序。这一步通常在后台线程完成,以避免阻塞UI。 3. **创建索引列表**:基于预处理的结果...

    Java中获取GBK编码汉字的拼音字头方法。(完整代码)

    获取GBK字的拼音的首字母 ...若输入是中文字符则返回拼音的首字母 若输入是中文字符但是该字符不知道如何发音,则返回空字符。 下载之前请查看:http://blog.csdn.net/z3h/archive/2011/04/05/6302890.aspx

    delphi中文拼音示例

    1. **拼音匹配**:根据用户输入的拼音首字母,找出所有以该首字母开头的汉字。这需要遍历Combobox的Items列表,对每个汉字调用拼音转换函数,比较首字母是否匹配。 2. **过滤内容**:一旦找到匹配的汉字,将其保留,...

    自动将汉字转为拼音的JSP程序

    如果找不到,则可能是因为该字符不是汉字或者不在预定义的范围内。 3. **异常处理**:对于非汉字字符或不在预定义范围内的Unicode码点,程序会直接忽略不作处理,避免出现错误的拼音。 #### 总结 这个JSP程序提供...

    实现ListView的A-Z字母排序

    遍历排序后的数据源,找出不同的首字母并添加到这个列表中。 4. 实现Adapter:创建一个自定义的Adapter,它不仅需要显示数据,还需要处理点击A-Z分组时的跳转。在getViewTypeCount()方法中返回2,表示两种类型的...

    基于JS实现数字+字母+中文的混合排序方法

    它没有完全遵循正常的排序逻辑,即数字小于所有字母,字母小于所有中文,且中文根据首字拼音的首字母排序。当前的实现仅保证了字母比中文小,但没有处理数字与字母、数字与中文之间的关系。为了实现完整的逻辑,我们...

    STComboBox

    当用户在输入框中键入字符时,组件会实时将输入的汉字转换为拼音,然后比较拼音的首字母,找出与之匹配的列表项。 其次,自动定位功能是通过监听用户的输入事件来实现的。每当用户输入一个字符,STComboBox都会触发...

Global site tag (gtag.js) - Google Analytics