数学求解之截取字符串


编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。

 

 

public class Split {

	public static boolean isLetter(char c) {
		int k = 0X80;
		return c / k == 0 ? true : false;

	}

	public static int lengths(String strSrc) {
		if (strSrc == null) {
			return 0;
		}
		int len = 0;
		char[] strChar = strSrc.toCharArray();
		for (int i = 0; i < strChar.length; i++) {
			len++;
			if (!isLetter(strChar[i]))
				len++;
		}
		return len;
	}

	public static String subString(String origin, int len) {
		if (origin == null || origin.equals("") || len < 1) {
			return "";
		}
		if (len > lengths(origin)) {
			return origin;
		}
		byte[] strByte = new byte[len];
		System.arraycopy(origin.getBytes(), 0, strByte, 0, len);
		int count = 0;
		for (int i = 0; i < len; i++) {
			int value = (int) strByte[i];
			if (value < 0)
				count++;
		}
		if (count % 2 != 0) {
			--len;
		}
		return new String(strByte, 0, len);
	}

	public static void main(String[] args) {
		System.out.println("" + subString("我ABC汉DEF", 6));
	}

}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值