截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但是要保证汉字不被截半个。

解决方案 »

  1.   

    String类里有很多方法,你要的是不是subString?你可以查一下API
      

  2.   

    写了一个,应该可以应付绝大多数的情况,其余LZ随机应变吧test.java
    ======================================================
    public class test{
    public static boolean ifCharacter(String s,int start) throws Exception{
    try{
    String temp = s.substring(start,start+1);
    return temp.length()!=temp.getBytes("utf-8").length;
    }catch(Exception e){
    return false;
    }
    }
    public static String cutString(String s,int cut) throws Exception{
    int j=0,i=0;
    while(i<s.length()&&j<cut)
    j+=ifCharacter(s,i++)?3:1;
    return s.substring(0,j>cut?i-1:i);
    }
    public static void main(String args[]) throws Exception{
    System.out.println(cutString(args[0],Integer.parseInt(args[1])));
    }
    }
    ======================================================H:\java>javac test.javaH:\java>java test 我很靓仔吗?yes!! 14
    我很靓仔H:\java>
    ======================================================
    其中汉字在byte数组中是占3个位置的
    所以上面这一句,14/3=4 只有4个汉字被截出来