- * 取首字母或全拼 - * - * @param hanzi 汉字字符串 - * @param isFull 是否全拼 true:表示全拼 false表示:首字母 - * @return 拼音 - */ - private static String convertHanzi2Pinyin(String hanzi, boolean isFull) { - /*** - * ^[\u2E80-\u9FFF]+$ 匹配所有东亚区的语言 - * ^[\u4E00-\u9FFF]+$ 匹配简体和繁体 - * ^[\u4E00-\u9FA5]+$ 匹配简体 - */ - String regExp = "^[\u4E00-\u9FFF]+$"; - StringBuffer sb = new StringBuffer(); - if (hanzi == null || "".equals(hanzi.trim())) { - return ""; - } - String pinyin = ""; - for (int i = 0; i < hanzi.length(); i++) { - char unit = hanzi.charAt(i); - //是汉字,则转拼音 - if (match(String.valueOf(unit), regExp)) { - pinyin = convertSingleHanzi2Pinyin(unit); - if (isFull) { - sb.append(pinyin); - } else { - sb.append(pinyin.charAt(0)); - } - } else { - sb.append(unit); - } - } - return sb.toString(); - } - - /** - * 将单个汉字转成拼音 - * - * @param hanzi 汉字字符 - * @return 拼音 - */ - private static String convertSingleHanzi2Pinyin(char hanzi) { - HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); - outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); - String[] res; - StringBuffer sb = new StringBuffer(); - try { - res = PinyinHelper.toHanyuPinyinStringArray(hanzi, outputFormat); - sb.append(res[0]);//对于多音字,只用第一个拼音 - } catch (Exception e) { - e.printStackTrace(); - return ""; - } - return sb.toString(); - } - - /*** - * 匹配 - *
- * 根据字符和正则表达式进行匹配 - * - * @param str 源字符串 - * @param regex 正则表达式 - * - * @return true:匹配成功 false:匹配失败 - */ - private static boolean match(String str, String regex) { - Pattern pattern = Pattern.compile(regex); - Matcher matcher = pattern.matcher(str); - return matcher.find(); - } - - public static String getColumnNameByMemo(String memo) { - String res; - if (memo.length() <= 3) res = convertHanzi2Pinyin(memo, true); - else - res = convertHanzi2Pinyin(memo, false); - - res = res.replace("\n", "").trim().replace("/", "_"); - res = res.replace("(", ""); - res = res.replace(")", ""); - // 正则表达式,匹配非字母、数字、下划线的字符 - String regex = "[^a-zA-Z0-9_]"; - // 使用replaceAll方法替换匹配的字符为空字符串,即删除这些字符 - res = res.replaceAll(regex, ""); - return res; - } -} -