`
sdfiyon
  • 浏览: 21571 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

取中文字符串拼音首字母工具类

    博客分类:
  • J2EE
阅读更多

以前项目中用到的取中文字符串拼音首字母方法。只支持GB2312汉字。

 

package cn.fiyo.base.util;

import java.io.UnsupportedEncodingException;

/**
 * 取得给定汉字串的首字母串,即声母串
 * <p>注:只支持GB2312字符集中的汉字</p>
 */
public final class PinYinUtils
{
    private final static int[] li_SecPosValue =
            {
                    1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472,
                    3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 5590
            };
    private final static String[] lc_FirstLetter =
            {
                    "a", "b", "c", "d", "e", "f", "g", "h", "j", "k", "l", "m", "n", "o", "p",
                    "q", "r", "s", "t", "w", "x", "y", "z"
            };

    /**
     * 取得给定汉字串的首字母串,即声母串
     *
     * @param str 给定汉字串
     * @return 声母串
     */
    public static String getAllFirstLetter(String str)
    {
        if (str == null || str.trim().length() == 0)
        {
            return "";
        }

        String _str = "";
        for (int i = 0; i < str.length(); i++)
        {
            _str = _str + getFirstLetter(str.substring(i, i + 1));
        }

        return _str;
    }

    /**
     * 取得给定汉字的首字母,即声母
     *
     * @param chinese 给定的汉字
     * @return 给定汉字的声母
     */
    public static String getFirstLetter(String chinese)
    {
        if (chinese == null || chinese.trim().length() == 0)
        {
            return "";
        }
        chinese = conversionStr(chinese, "GB2312", "ISO8859-1");

        if (chinese.length() > 1) //判断是不是汉字
        {
            int li_SectorCode = (int) chinese.charAt(0); //汉字区码
            int li_PositionCode = (int) chinese.charAt(1); //汉字位码
            li_SectorCode = li_SectorCode - 160;
            li_PositionCode = li_PositionCode - 160;
            int li_SecPosCode = li_SectorCode * 100 + li_PositionCode; //汉字区位码
            if (li_SecPosCode > 1600 && li_SecPosCode < 5590)
            {
                for (int i = 0; i < 23; i++)
                {
                    if (li_SecPosCode >= li_SecPosValue[i] &&
                            li_SecPosCode < li_SecPosValue[i + 1])
                    {
                        chinese = lc_FirstLetter[i];
                        break;
                    }
                }
            }
            else //非汉字字符,如图形符号或ASCII码
            {
                chinese = conversionStr(chinese, "ISO8859-1", "GB2312");
                chinese = chinese.substring(0, 1);
            }
        }

        return chinese;
    }

    /**
     * 字符串编码转换
     *
     * @param str           要转换编码的字符串
     * @param charsetName   原来的编码
     * @param toCharsetName 转换后的编码
     * @return 经过编码转换后的字符串
     */
    private static String conversionStr(String str, String charsetName, String toCharsetName)
    {
        try{
            str = new String(str.getBytes(charsetName), toCharsetName);
        }
        catch (UnsupportedEncodingException ex){
            System.out.println("字符串编码转换异常:" + ex.getMessage());
        }

        return str;
    }
}

 

分享到:
评论

相关推荐

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

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

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

    可以直接调用方法,有需要配合IndexBar-master这个通讯录开源控件使用的可以自己去下载IndexBar这个控件

    Java编程实现中英混合字符串数组按首字母排序的方法

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...

    PHP制作的中文拼音首字母工具类

    主要介绍了分享一段PHP制作的中文拼音首字母工具类的代码,非常的实用,代码很简单。 注: 英文的字串:不变返回(包括数字) eg .abc123 =&gt; abc123 中文字符串:返回拼音首字符 eg. 测试字符串 =&gt; CSZFC 中英混合...

    PHP制作的中文拼音首字母工具类.zip

    主要介绍了分享一段PHP制作的中文拼音首字母工具类的代码,非常的实用,代码很简单。 注: 英文的字串:不变返回(包括数字) eg .abc123 =&gt; abc123 中文字符串:返回拼音首字符 eg. 测试字符串 =&gt; ...

    Android获取字符串拼音工具类

    ccs2Pinyin : 汉字转拼音...getPinyinFirstLetter : 获取第一个汉字首字母 getPinyinFirstLetters: 获取所有汉字的首字母 getSurnamePinyin : 根据名字获取姓氏的拼音 getSurnameFirstLetter: 根据名字获取姓氏的首字母

    分享一段PHP制作的中文拼音首字母工具类

    * 汉字拼音首字母工具类 * 注: 英文的字串:不变返回(包括数字) eg .abc123 =&gt; abc123 * 中文字符串:返回拼音首字符 eg. 测试字符串 =&gt; CSZFC * 中英混合串: 返回拼音首字符和英文 eg. 我i我j =&gt; WIWJ * eg...

    java写的将字符串中的中文转化为拼音等一系列方法

    * 获取汉字串拼音首字母,英文字符不变 * @param chinese 汉字串 * @return 汉语拼音首字母 */ public static String getFirstSpell(String chinese) { StringBuffer pybf = new StringBuffer(); char...

    PingYinUtil 拼音工具类java

    PingYinUtil 拼音工具类java 将字符串中的中文转化为拼音,其他字符不变 获取汉字串拼音首字母,英文字符不变 获取汉字串拼音,英文字符不变

    字符串文件http密码资源文件openoffice图片等工具等

    Pinyin4jUtil中文转拼音、中文转拼音首字母、中文转字节序列 PwdUtils生成4-32位的随机密码 StringEncoding字母串转码 StringUtil字符串关于数字中文的判断与转换方法 UrlCoderUtil字符串url编码解码

    php获取汉字首字母的函数

    网上的方法有不少,都是一样的原理,按照...php  /*** Modified by http://iulog.com @ 2013-05-07* 修复二分法查找方法* 汉字拼音首字母工具类* 注: 英文的字串:不变返回(包括数字) eg .abc123 =&gt; abc123* 中

    java开发工具类(常用)

    对于日期,随机字符,时间差计算,拼音转换,金额计算转换,网络图片保存,身份证出生日期获取,字符串首字母获取,年月加减计算等

    PinYinUtil工具类

    获取文字的首字母大写字符串,一般用于获取名称的拼音码; 文字转拼音

    delphi 开发经验技巧宝典源码

    0159 如何将字符串首字母大写 104 5.3 字符串的相关判断 105 0160 判断某一字符是否在字符串中 105 0161 判断字符串是由数字、大写字母或小写字母组成 105 0162 判断字符串中的某一字符是否大写 106 0163...

    delphi 开发经验技巧宝典源码06

    0159 如何将字符串首字母大写 104 5.3 字符串的相关判断 105 0160 判断某一字符是否在字符串中 105 0161 判断字符串是由数字、大写字母或小写字母组成 105 0162 判断字符串中的某一字符是否大写 106 0163...

    VC++6.0核心编程源码.rar

    当然,你首先必须自己转换字符串,然后将已转换的消息表资源嵌入你的.exe文件或DLL模块,不过,这时该函数会选定正确的嵌入对象。ErrorShow示例应用程序(本章后面将加以介绍)展示了如何调用该函数,以便将...

    C#基类库(苏飞版)

    取汉字拼音的首字母,只要你输入一个汉字,或者是多个汉字就会取出相应的道字母,主要是方便查询使用的 复制代码 16.配置文件操作类 ConfigHelper 1.根据Key取Value值 2.根据Key修改Value 3.添加新的Key ,Value...

    1345个易语言模块

    取拼音首个字母.ec 取拼音首 模块.ec 取按键名称模块.ec 取控件或窗口的标题.ec 取操作系统类别.ec 取数据摘要.EC 取文件时 间.ec 取文件版本信息.ec 取文件目录列表.ec 取文件相关联的图标.ec 取文件行数.ec 取文本...

    1350多个精品易语言模块

    取拼音首个字母.ec 取拼音首 模块.ec 取按键名称模块.ec 取控件或窗口的标题.ec 取操作系统类别.ec 取数据摘要.EC 取文件时 间.ec 取文件版本信息.ec 取文件目录列表.ec 取文件相关联的图标.ec 取文件行数.ec 取文本...

Global site tag (gtag.js) - Google Analytics