class Test10 {
public static void main(String[] args) {
String s1 = "HM程序员";
//调用函数,测试结果
splitString(s1, 3);
splitString(s1, 4);
splitString(s1, 5);
splitString(s1, 6);
}
//定义一个函数,能实现从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
public static void splitString(String src, int len) {
//定义一个数组bt从0角标到len-1中负数出现的个数
int count=0;
//如果字符串输出为空,输出输入为空
if (null == src)
System.out.println("输入为空");
byte bt[] = src.getBytes(); // 将String转换成byte字节数组
int x=bt.length;//数组by的长度
//如果截取的字节数大于bt的字节,输出为bt的最大字节
if (len > x)
len = x;
//判断截取字节的最后一位的值
if (bt[len-1]> 0) {
//截取想要的字节
String subStrx = new String(bt, 0, len);
System.out.println("subStrx==" + subStrx); }
else
{
//如果截取的最后一个字节小于零,循环字节。并读取角标从零到len-1的负数个数
for (int y=0;y<len;y++)
{
if (bt[y]<0)
count++;
}
//如果截取字节数为偶数,打印输出结果
if(count%2==0)
{
String subStrx = new String(bt, 0, len);
System.out.println("subStrx==" + subStrx);
}
//如果字节数为奇数打印输出结果
else
{
String subStrx = new String(bt, 0, len-1);
System.out.println("subStrx==" + subStrx);
}
}
}
} |
|