String s1 = "123456789";
s1.subString(0,6);
可以截取
String s2 = "我啊1啊啊啊";
s2.subString(0,6);
出现异常 怎么处理能判断要是出现s2状态就截取5个呢!?

解决方案 »

  1.   

    没有问题啊,我运行了一下可以的啊,
    String s2 = "我啊1啊啊啊";
    System.out.println(s2.substring(0, 6));
    结果输出:我啊1啊啊啊
      

  2.   

    没明白楼主意思,s2.subString(0,6); 如果用这个的话,一个汉字也是占一位,例如String str="哈哈1呵呵";
     String str2=str.subString(0,2); str2=哈哈。你上面的不会出现异常,如果要根据字节数取字符串,就像1楼说的,用正则表达式判断占用几个字节
     正则表达式为  String regEx="^[^\\x00-\\xff]{1}$"
      

  3.   


    /**
     * 字符串截取
     * @param str 被截取的字符串
     * @param bytes 截取字节数
     * @return
     */
    public static String SplitString(String str, int bytes) {
    int count = 0;
    String reStr = "";
    if (str == null) {
    return "";
    }
    char[] tempChar = str.toCharArray();
    for (int i = 0; i < tempChar.length; i++) {
    String s1 = String.valueOf(tempChar[i]);
    byte[] b = s1.getBytes();
    count += b.length;
    if (count <= bytes) {
    reStr += tempChar[i];
    }
    }
    return reStr;
    }
      

  4.   

    String s2 = "我啊1啊啊啊";
    String[] arr = s2.split( "(?<=\\G.{1})" );
    String s3 = "";
    for ( int i = 0; i < 5; i++ )
    {
    s3 += arr[i];
    }
    System.out.println( s3 );