给定字符串,截图固定字节数

本文探讨了在Java中如何处理字符串的截取,尤其是在不同编码下汉字的处理。通过实例演示了如何避免截断汉字导致的乱码,并介绍了字符串转换为byte数组的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package demo4;

import java.io.UnsupportedEncodingException;

/**
 * @author xianyu
 * @version 1.0
 * @date 2020/4/13 10:31
 */
public class StringTest {

    public static void main(String[] args) {
        stringSplit("A我BCDF",5);
    }


    public static void stringSplit(String str, int len) {
        if(null == str) {
            return;
        }

        if(len > str.length()) {
            len = str.length();
        }
        // 将string转换成byte数组
        byte[] bt = str.getBytes();  // 默认utf-8编码下,汉字占3个字节
//        try {
            //bt = str.getBytes("GBK");  // GBK编码下汉字占2个字节
//        } catch (UnsupportedEncodingException e) {
//            e.printStackTrace();
//        }
        //对是否出现截半做分类处理,如果出现了截半情况,则asc码值小于0
        if(bt[len-1]<0) {
            int index = len-1;
            while(bt[index]<0&& index>=0){
                index--;
            }
            String result = new String(bt,0,index+1);
            System.out.println("出现了截半情况,结果为:" + result);
        } else {
            String result = new String(bt,0,len);
            System.out.println("没有出现截半情况,结果为:" + result);
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值