发表时间: 2019-08-19  |  分类: Java  |  标签: Java 字符串拆分
public static void main(String[] args) {
    String src = "abc硕大的dws你好不abca奥凯电缆静安寺;%20流量卡接%20你2额垃圾袋离开2";

    CharsetEncoder coder = StandardCharsets.UTF_8.newEncoder();
    // 要求拆分后,每个字符串的字节数不大于10个字节(String.getBytes().length <= 10)
    ByteBuffer out = ByteBuffer.allocate(10);
    CharBuffer in = CharBuffer.wrap(src);
    // 按顺序存储拆分之后的每个字符串
    List<String> strList = new LinkedList<>();

    int startPos = 0;
    while(true) {
        CoderResult result = coder.encode(in, out, true);
        int endPos = src.length() - in.length();

        strList.add(src.substring(startPos, endPos));

        startPos = endPos;

        out.rewind();
        if (!result.isOverflow()) {
            break;
        }
    }

    // 最终strList中每一个字符串的字节数都不会大于10个字节,可以直接存储到数据库中 
    strList.stream()
           .map(String::getBytes)
          .map(b -> b.length)
          .forEach(System.out::println);
}
阅读
关闭

分类

Linux JavaScript Raft Java Git iptables 内网穿透 RocketMQ 算法 Go Hystrix

标签

Linux bond JavaScript Vue Raft 分布式 笔记 Java 字符串拆分 Git Socks5 iptables zerotier 内网穿透 网络 RocketMQ Docker 字符串 VPS VPN 算法 kmp Go json 日志 log4j slf4j 面试 后端开发 系统界面 翻译 Feign Spring Cloud Hystrix