题目:编写一个按照字节来截取字符串的函数,功能类似于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];
}
}