zoukankan      html  css  js  c++  java
  • 包含中文的字符串中截取前N个字符

    package com.wangzhu.string;
    
    import java.io.UnsupportedEncodingException;
    
    public class SubStringDemo1 {
        public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "我是j好abc";
        String charset = "UTF-8";
        printGetStrByLen(str, charset);
        charset = "GBK";
        printGetStrByLen(str, charset);
    
        str = "我ABC汉字d";
        charset = "UTF-8";
        printGetStrByLen(str, charset);
        charset = "GBK";
        printGetStrByLen(str, charset);
    
        // 我是j好abc====编码方式===UTF-8
        // 我是j好abc====0
        // 3===0
        //
        //
        // 我是j好abc====1
        // 3===0
        //
        //
        // 我是j好abc====2
        // 3===0
        //
        //
        // 我是j好abc====3
        // 3===1
        ////
        // 我是j好abc====4
        // 6===1
        ////
        // 我是j好abc====5
        // 6===1
        ////
        // 我是j好abc====6
        // 6===2
        // 我是
        //
        // 我是j好abc====7
        // 7===3
        // 我是j
        //
        // 我是j好abc====8
        // 10===3
        // 我是j
        //
        // 我是j好abc====9
        // 10===3
        // 我是j
        //
        // 我是j好abc====10
        // 10===4
        // 我是j好
        //
        // 我是j好abc====11
        // 11===5
        // 我是j好a
        //
        // 我是j好abc====12
        // 12===6
        // 我是j好ab
        //
        // 我是j好abc====13
        // 我是j好abc
        //
        // 我是j好abc====14
        // 我是j好abc
        //
        // -------------
        // 我是j好abc====编码方式===GBK
        // 我是j好abc====0
        // 2===0
        //
        //
        // 我是j好abc====1
        // 2===0
        //
        //
        // 我是j好abc====2
        // 2===1
        ////
        // 我是j好abc====3
        // 4===1
        ////
        // 我是j好abc====4
        // 4===2
        // 我是
        //
        // 我是j好abc====5
        // 5===3
        // 我是j
        //
        // 我是j好abc====6
        // 7===3
        // 我是j
        //
        // 我是j好abc====7
        // 7===4
        // 我是j好
        //
        // 我是j好abc====8
        // 8===5
        // 我是j好a
        //
        // 我是j好abc====9
        // 9===6
        // 我是j好ab
        //
        // 我是j好abc====10
        // 我是j好abc
        //
        // 我是j好abc====11
        // 我是j好abc
        //
        // -------------
        // 我ABC汉字d====编码方式===UTF-8
        // 我ABC汉字d====0
        // 3===0
        //
        //
        // 我ABC汉字d====1
        // 3===0
        //
        //
        // 我ABC汉字d====2
        // 3===0
        //
        //
        // 我ABC汉字d====3
        // 3===1
        ////
        // 我ABC汉字d====4
        // 4===2
        // 我A
        //
        // 我ABC汉字d====5
        // 5===3
        // 我AB
        //
        // 我ABC汉字d====6
        // 6===4
        // 我ABC
        //
        // 我ABC汉字d====7
        // 9===4
        // 我ABC
        //
        // 我ABC汉字d====8
        // 9===4
        // 我ABC
        //
        // 我ABC汉字d====9
        // 9===5
        // 我ABC汉
        //
        // 我ABC汉字d====10
        // 12===5
        // 我ABC汉
        //
        // 我ABC汉字d====11
        // 12===5
        // 我ABC汉
        //
        // 我ABC汉字d====12
        // 12===6
        // 我ABC汉字
        //
        // 我ABC汉字d====13
        // 我ABC汉字d
        //
        // 我ABC汉字d====14
        // 我ABC汉字d
        //
        // -------------
        // 我ABC汉字d====编码方式===GBK
        // 我ABC汉字d====0
        // 2===0
        //
        //
        // 我ABC汉字d====1
        // 2===0
        //
        //
        // 我ABC汉字d====2
        // 2===1
        ////
        // 我ABC汉字d====3
        // 3===2
        // 我A
        //
        // 我ABC汉字d====4
        // 4===3
        // 我AB
        //
        // 我ABC汉字d====5
        // 5===4
        // 我ABC
        //
        // 我ABC汉字d====6
        // 7===4
        // 我ABC
        //
        // 我ABC汉字d====7
        // 7===5
        // 我ABC汉
        //
        // 我ABC汉字d====8
        // 9===5
        // 我ABC汉
        //
        // 我ABC汉字d====9
        // 9===6
        // 我ABC汉字
        //
        // 我ABC汉字d====10
        // 我ABC汉字d
        //
        // 我ABC汉字d====11
        // 我ABC汉字d
        //
        // -------------
    
        }
    
        public static void printGetStrByLen(String str, String charset)
            throws UnsupportedEncodingException {
        System.out.println(str + "====编码方式===" + charset);
        for (int i = 0, len = str.getBytes(charset).length + 2; i < len; i++) {
            System.out.println(getStrByLen(str, i, charset, false));
            System.out.println();
        }
        System.out.println("-------------");
        }
    
        /**
         * 截取字符串【UTF-8:3个byte,GBK:2个byte】
         * 
         * @param str
         * @param len
         * @param charset
         * @param flag
         * @return
         * @throws UnsupportedEncodingException
         */
        public static String getStrByLen(String str, int len, String charset,
            boolean flag) throws UnsupportedEncodingException {
        System.out.println(str + "====" + len);
        byte[] buf = str.getBytes(charset);
        int step = 1;
        if (charset.equals("UTF-8")) {
            step = 2;
        }
        int length = buf.length;
        if (len >= length) {
            return str;
        }
        int count = 0, size = 0;
        for (int i = 0; i < length; i++) {
            count++;
            if (buf[i] < 0) {
            // 汉字
            i += step;
            count += step;
            }
            size++;
            if (count >= len) {
            if (!flag) {
                if ((count > len) && (buf[i] < 0)) {
                size--;
                }
            }
            System.out.println(count + "===" + size);
            return str.substring(0, size);
            }
        }
        return null;
        }
    }
  • 相关阅读:
    【网络文摘】Androidguy:当你的才华还无法撑起你的野心时,那么应该静下心来学习
    【Android 百度地图实战】2.几种地图图层的显示
    【Android 百度地图实战】1.构建一个基础的地图页面
    【Window OS】”对于目标文件系统,文件XXXXX过大“导致无法进行文件操作的解决方法
    【ASP.NET 问题】IIS发布网站后出现 "处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误"的解决办法
    【Javascript Demo】谷歌地图简单实现(附遮罩层和弹出层实现)
    【Javascript Demo】遮罩层和百度地图弹出层简单实现
    【Javascript Demo】遮罩层和弹出层简单实现
    【网络文摘】程序人生:我们工作到底为了什么
    Android手势密码--设置和校验
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/4316569.html
Copyright © 2011-2022 走看看