`
conkeyn
  • 浏览: 1540141 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

java取出汉字字符串的拼音首字母

    博客分类:
  • Java
阅读更多

http://library.iteye.com/blog/163653

 

import java.lang.*;   
  
public class GB2Alpha {   
  
    //字母Z使用了两个标签,这里有27个值   
    //i, u, v都不做声母, 跟随前面的字母   
    private char[] chartable =   
            {   
                '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈',   
                '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然',   
                '撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', '座'  
            };   
  
    private 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'  
            };   
  
  
    private int[] table = new int[27];   
  
    //初始化   
    {   
        for (int i = 0; i < 27; ++i) {   
            table[i] = gbValue(chartable[i]);   
        }   
    }   
  
    public GB2Alpha() {   
  
    }   
  
    //主函数,输入字符,得到他的声母,   
    //英文字母返回对应的大写字母   
    //其他非简体汉字返回 '0'   
  
    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 '0';   
  
  
        int i;   
        for (i = 0; i < 26; ++i) {   
            if (match(i, gb))   
                break;   
        }   
  
        if (i >= 26)   
            return '0';   
        else  
            return alphatable[i];   
    }   
  
    //根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串   
    public String String2Alpha(String SourceStr) {   
        String Result = "";   
        int StrLength = SourceStr.length();   
        int i;   
        try {   
            for (i = 0; i < StrLength; i++) {   
                Result += Char2Alpha(SourceStr.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 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 0;   
        }   
  
    }   
  
  
    public static void main(String[] args) {   
        com.mkrx.GB2Alpha obj1 = new com.mkrx.GB2Alpha();   
        System.out.println(obj1.String2Alpha("测试:中华人民共和国!"));   
        return;   
    }   
}  

 

分享到:
评论

相关推荐

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

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

    取出汉字字符串的拼音首字母

    ### 取出汉字字符串的拼音首字母:Java 实现 #### 概述 本文将详细介绍一个 Java 类 `ChineseCharToEn` 的实现方法,该类主要用于获取汉字字符串的拼音首字母。这种技术常用于需要对汉字进行快速识别或索引处理的...

    获取中文拼音首字母

    在给定的代码中,存在一个名为`GetChineseSpell`的函数,它接受一个字符串`strText`作为参数,其目的是将输入的中文字符串转化为每个汉字的首字母拼写。函数首先检查输入是否为空,然后使用一个循环遍历字符串中的每...

    使用pinyin4j的Java库进行汉字转拼音

    最后,根据需要拼接拼音或提取拼音首字母。如果需要将字符串转换为ASCII码,则进行编码转换即可。pinyin4j通过这些简单易用的接口,使得开发者可以方便地在Java程序中处理汉字和拼音之间的转换,极大地降低了开发...

    java汉字转拼音字头-代码类(通用版)

    - **拼音转换方法**:该方法接受一个字符串参数(包含汉字),返回一个字符串,表示这些汉字的拼音字头。 ```java public static String getPinYinHeadChar(String str) { // 实现逻辑 } ``` 4. **拼音字头...

    java中文转全拼工具类分享

    3. `getCnASCII(String cnStr)`:虽然这个方法在提供的代码片段中没有完整实现,但通常这种方法会将中文字符串转换为ASCII编码。在Java中,可以使用`String`类的`getBytes()`方法配合特定的字符编码(如"GBK"或"UTF-...

Global site tag (gtag.js) - Google Analytics