字符串按字节截取

public class TestSubString {
    public static void main(String[] args) {
        String a = "abc你好123";
        a = subStr(a,6);
        System.out.println(a);
    }
    
    public static String subStr(String str ,int end){
        int length=0;
        char[] ch = str.toCharArray(); 
        String str2 = "";
        for(int i =0;i<str.length();i++){
//            int num = Character.codePointAt( ch,i);
//            int num = Character.codePointAt( str,i);
            int num = str.codePointAt(i); //改行代码与上两行代码实现的效果一致,获取当前遍历元素的值。小于等于255是一个字节,超过255是两个字节
            if(num>=0&&num<=255){
                length++;//字节数加1
            }else{
                length+=2;//字节数加2
            }
            if(length<end){   //没有达到截取字节长度继续循环,并将遍历的元素与str字符串连接
                str2+=ch[i];
            }else if(length==end){  //正好达到截取字节长度,就退出循环,并将遍历的元素与str字符串连接
                str2+=ch[i];
                break;
            }else{                  //超过长度,是因为当前遍历的是中文字符元素,不截取半个中文,所以直接退出循环。
                break;
            }
        }
        return str2; 返回拼接的新字符串
    }
}

猜你喜欢

转载自blog.csdn.net/Angle_Byron/article/details/130971232
今日推荐