Java按字节截取字符串


在应用开发中,为了页面齐整,把内容较长的标题截取成等长的字串,如果在标题中命名有英文,数字,汉字,但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;
      }
}

相关内容