按字节截取字符串,代码没看明白,小白,求讲解...

Jimmy01 发布于 2013/11/23 02:10
阅读 190
收藏 0

class SplitString

       public static String split(String str,int num){ 
             byte[] strs = str.getBytes();

                这里if语句的作用是什么?
             if(strs[num-1]<0)
             {
                 num=num-1;
              }
              byte[] news = new byte[num];
              System.arraycopy(strs,0,news,0,num);
              return new String(news);
       } 
       public static void main(String[] args) 
      { 
          String str = split("我 ABC", 4); 
          System.out.println(str);
          String str2 = split("我 ABC 走 DEF", 6); 
          System.out.println(str2);
       } 
}

加载中
0
空杯子
空杯子

中山正解;

public static String split(String str, int num)
{
	byte[] strs = str.getBytes();
	if (strs[num - 1] < 0)
	{
		num = num - 1;
	}
	byte[] news = new byte[num];
	System.arraycopy(strs, 0, news, 0, num);
	for (byte b : news){System.out.println(b);}//打印字节数组的值就知道怎么回事了
	return new String(news);
}



0
中山野鬼
中山野鬼

这个是可变长字符编码的判定方法。哈。你去google或 wiki以下unicode就知道了。再读些历史,就更容易理解了。哈。

补充喷一句,这类处理方法的实现,使用面向对象语言来学习就是扯淡的事情。你额外还要关注很多和处理方法无关的乱七八糟的东西。哈。

0
dodojava
dodojava
我觉得那句if 是判断最后一个字符是否合法的,不合法就舍弃,原意应该是想去掉换行符吧,这个写的可能有点小问题吧
0
loki_lan
loki_lan
你要知道byte的值范围是0~127,超过127的字符就会出现符号位错误(原本byte是有符号0的正数变成了负数1)。所以代码中应该是不取最后一个超过127的字符。不过也可以做校正操作,加个256就行了。
返回顶部
顶部