java按照字节数截取字符串(确保汉字不能被截取半个)

本文介绍了一种智能截取包含汉字的字符串方法,确保不会截取半个汉字,通过逐字符读取并计数字节长度,达到精确控制截取长度的目的。

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

编写一个截取字符串的函数,输入一个字符串和要截取的字节长度,确保汉字不能被截取半个,比如输入(“我ABC”,4)应该输出"我AB",输入(“LAB汉”,4)应该输出"LAB汉",而不应该输出LAB和汉的一半

思路:在内存中,字母和符号占一个字节,而汉字占两个或三个字节.所以在截取的时候,应该一边拼接字符串,一边记录已经截取的字节长度,遇到汉字时,只要字节长度没有超出,则这个汉字就应该被全部截取

代码:

public class test{
	private String str;
	private int num;
	
	public test(String str,int num){
		this.str = str;
		this.num = num;
		
	}
	
	public void splitIt(){
		String temp = null;
		
		//记录已经截取的字节
		StringBuffer sb = new StringBuffer();
		
		//记录已经截取的字节长度
		int len = 0;
		
		for(int i = 0;i<num&&len<num;i++){
			
			//获取单个字符
			temp = String.valueOf(str.charAt(i));
			//获取单个字符的字节数,累加
			len += temp.getBytes().length;
			//拼接到目标字符串上
			sb.append(temp);
		}
		
		System.out.println(sb.toString());
		
	}
	
	public static void main(String[] args){
		test t = new test("我ABCf",4);
		t.splitIt();
		
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值