定义一个方法:按照最大的字节数来取子串

来源:互联网 发布:windows微软账户被禁用 编辑:程序博客网 时间:2024/06/06 03:20
/** *            定义一个方法:按照最大的字节数来取子串 如对于“ab你好”,如果取3个字节那么子串就是ab加半个你,那么这个你字就要省略 * @throws IOException */public static void main(String[] args) throws IOException {String s = "ab你好dd";for (int i = 0; i < s.length(); i++) {String str = getSubstring(s, i + 1);System.out.println("截取" + (i + 1) + "个字节得到的子串是:" + str);}}public static String getSubstring(String s, int len) throws IOException {//首先获得这个字符串的字节数组byte[] bys = s.getBytes("GBK");int count = 0;for (int i = len - 1; i >= 0; i--) {//因为中文的字节的最高位都是1,所以都是负数的//从最后一位开始判断,如果是正数,那么这个子串可以取if (bys[i] > 0)break;//如果是负数,那么需要记录下连续负数的次数,如果是奇数,则取的字节数需要减一,如果是偶数,则不需要改变字节数count++;}if (count % 2 == 0)return new String(bys, 0, len, "GBK");elsereturn new String(bys, 0, len - 1, "GBK");}

0 0
原创粉丝点击