这两天开发android的通信录,要用到汉字模糊查询,用了网上的pinyin4j包,回顾一下:
1 导入包方法:
项目 -> 右键 -> Build Path -> Add External Archives -> User Liabrary -> next -> User Libraries -> New -> 随便写一个名字 -> OK -> Add JARs -> 选中JAR文件
2 在项目中使用JAR包中的方法
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;
Log.v("TAG1","" + getPingYin("西安市2曹阳区- -马家屯"));
// ------------------------将汉字转换为全拼-------------------------------
public static String getPingYin(String src)
{
char[] t1 = null;
t1 = src.toCharArray();
String[] t2 = new String[t1.length];
net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat t3 = new net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat();
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
String t4 = "";
int t0 = t1.length;
try
{
for (int i = 0; i < t0; i++)
{
// 判断是否为汉字字符
if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+"))
{
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
t4 += t2[0];
} else
{
t4 += java.lang.Character.toString(t1[i]);
}
}
// System.out.println(t4);
return t4;
} catch (BadHanyuPinyinOutputFormatCombination e1)
{
e1.printStackTrace();
}
return t4;
}
3 在项目中使用时发现有如下问题
Could not find class 'net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat', referenced from method
解决办法: 项目上点右键 -> Build Path -> Configure Build Path -> 选中 "Order and Export" TAB页, 钩选你前面加的JAR包