编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,
应该输出为"我ABC"而不是"我ABC+汉的半个"。
import java.io.UnsupportedEncodingException;
/**
* 截取的要点:
* 1.首先将字符串转换成字节数组,再将字节数组的每个元素拿出来,判断有无负数(一个汉字为两个负数),即有汉字
* 2.len:这个len是将字符串转换成字节数组的要截取的长度,
* 如"我ABC你"的字节数组长度为7(-50,-46,65,66,67,-60,-29),而截取的是6(-50,-46,65,66,67,-60),
* 3.对截取的字节数组(-50,-46,65,66,67,-60)统计负数的个数
* 4.String里的方法substring方法将双字节的汉字当成一个字节的字符(UCS2字符)处理了,而我们的字节数组一个函数
* 就是两个字节,所以要想用substring方法,还需要将负数的个数count除以二才可以
* @author Administrator
*
*/
public class TestJq {
public static String subString(String str, int len) {
if (str == null && ".equals(str)) {
return null;
}
// 将字符串中的char数组转换成指定编码方式的byte数组的函数
byte[] strBytes = null;
try {
strBytes = str.getBytes("GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 得到字符串的长度,判断截取字符串的长度是否在判断的范围内,否则返回原串
int strLen = strBytes.length;
if (len >= strLen || len |
|