在应用开发中,为了页面齐整,把内容较长的标题截取成等长的字串,如果在标题中命名有英文,数字,汉字,但Java默认的截取方法是按字符截取的,一个汉字跟一个英文字母以及数字都默认为一个char,按这个种方法截取后的字串七长八短很不齐整。 如果改用按字节截取会好很多,因为一个汉字会看到两个字节,所以可能会存在一个字节的差异,当然一个汉字是不会被分成两半的. 详情见下面代码:
/***
* @date 2009-12-17
* @author lrm
*/
public class SubStringByByte {
public static void main(String[] args) {
// 原始字符串 (相差一个字节)
String s = "450_10kV246电容器";
String s1 = "450_232断路器吉祥二10A507";
System.out.println("前18位:" + SubStringByByte.subStringByByte(s, 10));
System.out.println("前18位:" + SubStringByByte.subStringByByte(s1, 10));
}
/**
* 按字节截取字符串
* @param orignal 原始字符串
* @param subcount 截取位数
*@Create on Dec 17, 2009 by lrm
*/
public static String subStringByByte(String orignal, int subcount){
int reInt = 0;
String reStr = "";
if (orignal == null)
return "";
char[] tempChar = orignal.toCharArray();
for (int kk = 0; (kk < tempChar.length && subcount > reInt); kk++){
String s1 = orignal.valueOf(tempChar[kk]);
byte[] b = s1.getBytes();
reInt += b.length;
reStr += tempChar[kk];
}
return reStr;
}
}