例题1: 要求并不是按传统的字典排序,而是考虑小写字母,也就是a = A。
public static int comparto(String aArr ,String bArr){
int aLen = aArr.length();
int bLen = bArr.length();
int order1,order2;
char [] aArray = aArr.toCharArray();
char [] bArray = bArr.toCharArray();
int len = Math.min(aLen,bLen);
for(int i =0;i<len;i++){
if(aArray[i]!=bArray[i]){
order1 = aArray[i]>96 ? aArray[i]-96:aArray[i]-64;
order2 = bArray[i]>96 ? bArray[i]-96:bArray[i]-64;
if(order1!=order2){
return order1-order2;
}else
return aArray[i]-bArray[i];
}
}
return aLen - bLen;
}
例题2:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我 ABC,4”,应该截取为“我 AB”,输入“我 ABC 汉 DEF,6",应该输出为“我 ABC”,而不是“我 ABC+汉的半个”。
解析:本题不能使用String类的subString(int startIndex, int endIndex)方法,因为它是按char计算的。string.getbytes()是按byte计算的,一个汉字的getbytes().length==2。
public static boolean isChineseChar(char c) throws UnsupportedEncodingException{
return String.valueOf(c).getbytes("GBK").length>1;
}