zoukankan      html  css  js  c++  java
  • 截取字符串指定字节长度

    项目中用到的是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;
        }
    }
  • 相关阅读:
    JavaScript完整总结
    vue引入iframe的父子页面的数据传递
    随笔开发中笔记
    关于表格(table)的操作
    es6--6.字符串相关
    ES6--5.数组4个新增方法
    ES6--4.解构赋值
    sublime 远程连接服务器编辑
    ajaxSubmit
    修改 debian 时区
  • 原文地址:https://www.cnblogs.com/whx20100101/p/10570371.html
Copyright © 2011-2022 走看看