`
peonyzzdx
  • 浏览: 580717 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

只输入姓名的首字母或者全拼实现快速检索的功能

阅读更多
新增入一条数据时,在数据库中存入姓名的首字母拼写或者全拼,搜索时直接搜索这个字段即可。如下姓名美丽,在数据库中存入ml或者meili,则搜索时只需要输入ml或者meili就可以查到姓名为“美丽”这条信息。


那么如何把姓名的首字母拼写或者全拼存入数据库呢?


private void autoFillChinesePinyin(OverseaPersonnel overseaPersonnel){
if(overseaPersonnel.getName()!=null){
Map<String,String> map = Chinese2pinyin.changeChinese2Pinyin(overseaPersonnel.getName());
overseaPersonnel.setSimplePinyin(map.get("simplePinyin"));
overseaPersonnel.setFullPinyin(map.get("fullPinyin"));
}
}


需要jar包:pinyin4j-2.5.0.jar,见附件。

Chinese2pinyin.java

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public static Map<String, String> changeChinese2Pinyin(String chinese) {
Map<String, String> pinyin = new HashMap<String, String>();

HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);

StringBuffer fullPinyin = new StringBuffer();
StringBuffer simplePinyin = new StringBuffer();
char[] chineseChar = chinese.toCharArray();
for (int i = 0; i < chineseChar.length; i++) {
String[] str = null; 
try {
str = PinyinHelper.toHanyuPinyinStringArray(chineseChar[i],
format);
} catch (BadHanyuPinyinOutputFormatCombination e) {
logger.error("异常信息", e);
}
if (str != null) {
fullPinyin = fullPinyin.append(str[0].toString());
simplePinyin = simplePinyin.append(str[0].charAt(0));
}
if (str == null) {
String regex = "^[0-9]*[a-zA-Z]*+$";
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(String.valueOf(chineseChar[i]));
if (m.find()) {
fullPinyin = fullPinyin.append(chineseChar[i]);
simplePinyin = simplePinyin.append(chineseChar[i]);
}
}
}
pinyin.put("fullPinyin", fullPinyin.toString());
pinyin.put("simplePinyin", simplePinyin.toString());

return pinyin;
}



  • 大小: 17.3 KB
0
7
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics