• 截取字符串指定字节长度


    项目中用到的是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;
        }
    }
  • 相关阅读:
    下巴肉和脖子肉怎么减肥
    java中compareTo和compare方法之比较,集合中对象的比较
    easyui中combotree只能选子选项,父级不被选中
    java线程总结(2/5)
    流行的框架与新技术
    Spring官网改版后下载
    prepareStatement与Statement的区别
    jQuery li click失效问题
    Flask 启动报错 error: [Errno 10053]
    [linux]CentOS 7 下安装 RabbitMQ
  • 原文地址:https://www.cnblogs.com/whx20100101/p/10570371.html
Copyright © 2020-2023  润新知