汉字转换拼音(pinyin4j)

汉字转换拼音,根据拼音的首字母分,在安卓通讯录中就应用的非常好。通讯录采用拼音的首字母排序分类,侧边栏可以根据字母检索快速跳转。如下图所示:
通讯录片面截图

推荐一个转换工具:http://pinyin4j.sourceforge.net/
从这个网站下载 pinyin4j-2.5.0.jar 包,里面有很多介绍,可以很详细的了解。(也可以在这里下载:http://download.csdn.net/detail/q59521038/9278953

注意:这个jar首次转换汉字时,会把转换的列表加载到内存,会造成内存一下子消耗很多,且第一次加载慢,后面就非常快,这个问题在开发时要注意,最好异步操作。

留下一个工具类代码,通过工具类代码就可以实现大部分你想要的功能:

/**
 * @homepage http://pinyin4j.sourceforge.net/
 *
 * 拼音转换类
 */
public class PingYinUtil {
    /**
     * 将字符串中的中文转化为拼音,其他字符不变
     * 
     * @param inputString
     * @return
     */
    public static String getPingYin(String inputString) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);

        char[] input = inputString.trim().toCharArray();
        String output = "";

        try {
            for (int i = 0; i < input.length; i++) {
                if (java.lang.Character.toString(input[i]).matches(
                        "[\\u4E00-\\u9FA5]+")) {
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(
                            input[i], format);
                    output += temp[0];
                } else
                    output += java.lang.Character.toString(input[i]);
            }

        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }

    /**
     * char转成拼音
     *
     * @param c
     * @return
     */
    public static String getPingYin(char c) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);
        String output = "";
        try {
            if (java.lang.Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                String[] temp = PinyinHelper
                        .toHanyuPinyinStringArray(c, format);
                output += temp[0];
            } else
                output += java.lang.Character.toString(c);
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }

    /**
     * 首字是否是数字
     * @param inputString
     * @return
     */
    public static boolean isNumber(String inputString) {

        char[] input = inputString.trim().toCharArray();

        if (java.lang.Character.toString(input[0]).matches("[0-9]")) {

            return true;
        }

        return false;

    }

    /**
     * 首字是否是字母
     * @param inputString
     * @return
     */
    public static boolean isLetter(String inputString) {

        char[] input = inputString.trim().toCharArray();

        if (java.lang.Character.toString(input[0]).matches("[a-zA-Z]")) {

            return true;
        }

        return false;

    }

    /**
     * 首字是否是汉字
     * @param inputString
     * @return
     */
    public static boolean isHanZi(String inputString) {

        char[] input = inputString.trim().toCharArray();

        if (java.lang.Character.toString(input[0]).matches("[\\u4E00-\\u9FA5]+")) {

            return true;
        }

        return false;

    }

    /**
     * char 是否是汉字
     * @param c
     * @return
     */
    public static boolean isHanZi(char c) {
        if (java.lang.Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
            return true;
        }
        return false;
    }

    /**
     * 判断是字母
     * @param str
     * @return
     */
     public static boolean isWord(String str)
        {
            Pattern pattern = Pattern.compile("^[A-Za-z]+$");
            Matcher isNum = pattern.matcher(str);
            if (!isNum.matches()) {
                return false;
            }
            else {
                return true;
            }
        }

    /**
     * 判断数字
     * 
     * @param str
     * @return
     */
    public static boolean isNumeric(String str) {
        Pattern pattern = Pattern.compile("^[0-9]*$");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 判断字母数字混合
     * 
     * @param str
     * @return
     */
    public static boolean isAllWord(String str) {
        Pattern pattern = Pattern.compile("^[A-Za-z0-9]+$");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 判断是汉字
     * 
     * @param str
     * @return
     */
    public static boolean isAllHanZi(String str) {
        Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }

    }


    /**
     * 判断是特殊字符
     * 
     * @param str
     * @return
     */
    public static boolean isAllTeShuZiFu(String str) {
    //  String regEx = "[`~!@#$%^&*()+=|{}':;',//[//].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?::¥]";
        String regEx="[^A-Za-z0-9\\u4E00-\\u9FA5]";
        Pattern pattern = Pattern.compile(regEx);
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }

    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值