java中关于拼音的处理。列如:两个字符串按拼音排序(微信好友列表中按姓名排序),获取中文的首字母(字母和数字返回原本)。
package httpreq.guide;
import net.sourceforge.pinyin4j.PinyinHelper;
/**@author 作者yangjing: 字符串 拼音
* @date 创建时间:2017-2-18 下午4:07:27
*/
public class PinYin {
/**
* @Description:两个字符串按汉语拼音排序规则
* @return int 返回类型
* @author yangjing
* @date 2017-2-18 下午4:51:45
*/
public int getSort(String s1,String s2){
char[] ss1=s1.toCharArray();
char[] ss2=s2.toCharArray();
for (int i = 0; i < ss1.length && i < ss2.length; i++) {
String sss1=pinyin(ss1[i]);
String sss2=pinyin(ss2[i]);
if(sss1.compareTo(sss2)>0){
return 1;
}else if(sss1.compareTo(sss2)<0){
return -1;
}
}
//说明前面全部相同,字符串短的小
if(s1.length()>s2.length()){
return 1;
}else if(s1.length()<s2.length()){
return -1;
}
return 0;
}
/**
* @Description: 提取首字母
* @return String 返回类型
* @author yangjing
* @date 2017-2-18 下午4:17:45
*/
public String fristChar(String str){
char[] strs=str.toCharArray();
String s=pinyin(strs[0]);
String fristOne=s.substring(0, 1);
String fristset=fristOne.toUpperCase();
return fristset;
}
/**
* @Description: 字符的拼音,多音字符就获取第一个,字母的就返回null
* @return String 返回类型
* @author yangjing
* @date 2017-2-18 下午4:27:21
*/
public String pinyin(char c){
String[] pinyins=PinyinHelper.toHanyuPinyinStringArray(c);
if(pinyins==null){
return String.valueOf(c);
}
return pinyins[0];
}
}