截取字符串指定字节长度

项目中用到的是ORACLE数据库,字符编码是GBK,所以在数据库中一个汉字占用2个字节,如果是UTF-8编码,则一个汉字占用3个字节。

也就说如果字段定义为VARCHAR2(100),则最多存储50个汉字,如果是UTF-8编码,则最多存储33个汉字。

项目中有个需求是到处文件,要求:每个字段按一定的长度到处,如果数据不足则后补空格,如果超过指定长度则截取。

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

import org.apache.commons.lang.StringUtils;

public class OpeBytes {

    /**
    * 根据制定字节长度截取字符串,不足后面补空格
    * @param aim 目标字符串
    * @param length 指定字节长度
    * @return 新的字符串
    */
    public static String getNewStr(String aim, int length) {
       byte[] bytes;
       String string = "";
       try {
           if (StringUtils.isNotBlank(aim)) {
              bytes = aim.getBytes("GBK");
              int temLength = bytes.length;
              if (temLength > length) {
                  byte[] copyOf = Arrays.copyOf(bytes, length);
                  string = new String(copyOf, "GBK");
              } else {
                  int i = length - temLength;
                  if (i > 0) {
                     aim += String.format("%-" + i + "s", " ");
                  }
                  string = aim;
              }
           } else {
              aim = "";
              aim += String.format("%-" + length + "s", " ");
              string = aim;
           }
       } catch (UnsupportedEncodingException e) {
           System.out.println("获取字符串字节异常:" + e);
       }
       return string;
    }
}

猜你喜欢

转载自www.cnblogs.com/whx20100101/p/10570371.html
今日推荐