package com.itheima;
/*
编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表),
例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,
截取3个字节也要是"HM"而不要出现半个中文
*/
public class Test10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="HM程序员";
//测试程序
String newStr=splitString(str,1);
System.out.println(newStr);
}
public static String splitString(String str,int len)
{
String newStr=null;
byte[] bytes=str.getBytes();//将字符串转换成字节数组。
if(len>=bytes.length)
{
return str;
}else
{
//按照给定角标,截取一个新字符串。
newStr=new String(bytes,0,len);
//新字符串的长度。
int newlen=newStr.length();
//比较截取后的新字符串最后一个元素与原字符串最后一个元素是否相等
if(newlen>=2)
{
if(newStr.charAt(newlen-1)!=str.charAt(newlen-1))
{
//如果新字符串最后一个元素与原字符串最后一个元素不等,则比较倒数第二个元素,如果不相等,则去掉最后两元素
if(newStr.charAt(newlen-2)!=str.charAt(newlen-2))
{
newStr=new String(bytes,0,len-2);
}else
{ //如果相等,则只去掉最后一个元素。
newStr=new String(bytes,0,len-1);
}
}
}else{
//否则如果新字符串长度为1
if(newStr.charAt(newlen-1)!=str.charAt(newlen-1))
{
newStr=null;
}
}
}
return newStr;
}
} |