JAVA 按照字节截取字符串

时间:2023-01-12 11:56:49

题目:编写一个按照字节来截取字符串的函数,功能类似于String的substring()方法,String类是按照字符截取的,例如“中国abc".substring(1,3),就是返回“国a”,这里要求按照字节,一个英文和数字是一个字节,一个汉字是两个字节,索引包括前面,不包括后面。

/*

 *getBytes:获取字节数量,只接收字符串类型的数据,
 *charAt(i) 获取字符串的第i个索引处的字符
 *如果想转换成字符串,就需要将自己的东西加上”“
 *字符串的长度使用length(),针对的是字符串,
 *字符的长度使用length,针对的是数组
 *汉字截半的时候,ASCII码值是小于0的数值
*/
public class  CutString
{   
   public static void getString(String str,int bnum , int anum ){
           String result="";  //存储最后的截取的字符串
   int j = 0;
   int num = 0; 
   byte[] allstr = str.getBytes();
   if ((anum-bnum)>allstr.length)
   {
   System.out.println("所要截取的字符串超出字符串长度");
   return;
   }
   //1,判断起始位置和末尾位置是不是汉字,(我的输入索引要求包括前索引,但是不包括后索引)
   //    如果起始位置是汉字,而且是汉字的后半部分,则需要把这个汉字截断,就是起始索引加1
   //    如果末尾位置是汉字,而且是汉字的后半部分,则需要将这个汉字截断,就是末尾索引减1
  
    if (allstr[bnum]<0 && bnum%2 !=0)
{
                  bnum+=1;
}
//System.out.println(bnum);
     if (allstr[anum]<0 && anum%2 !=0)
  {
                   anum-=1;
  }
//System.out.println(anum);
//


   for (int i = 0;i <str.length() ;i++ )
{   
char charever =str.charAt(i);
byte[] addesschar=(charever+"").getBytes();

num+=addesschar.length;
//根据下面的判断条件来寻找在索引范围的字符
if (num>bnum  && num<=anum)
{
result += (charever+"");
j++;
}
}
for (int t = 0;t <result.length(); t++)
{
System.out.println(result.charAt(t));
}
   }
public static void main(String[] args) 
{
String str = "我们12jd谁的ueijrkjgor";
getString(str,3,9); //包括index[3],但是不包括index[9];
}
}