字符串编程题一道

来源:互联网 发布:淘宝美工如何上新 编辑:程序博客网 时间:2024/06/10 16:53

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截去半个,列如“人ABC”4应该截取为“人AB”,输入“人ABC们DEF”6,应该输出“人ABC”而不是“人ABC+半个们”。

package cn.exercise.algorithmsTest;/** * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截去半个, * 列如“人ABC"4应该截取为“人AB”,输入“人ABC们DEF”6,应该输出“人ABC”而不是“人ABC+半个们”。 *  * @author 小豪 *  */public class Test13 {    // 判断字符c是否是中文字符,如果是返回true    public static boolean isChinese(char c) {        String sb = String.valueOf(c);        return sb.getBytes().length > 1 ? true : false;    }    public String truncateStr(String str, int len) {        if (str == null || str.equals("") || len == 0) {            return "";        }        char[] charArr = str.toCharArray();        StringBuilder sb = new StringBuilder("");        int count = 0;        for (char cc : charArr) {            if (count < len) {                if (isChinese(cc)) {                    if (count + 1 == len) {//如果要求截取的字符串的长度只差一个字符,但接下来的字符是中文。则截取结果子串中不保存这个中文字符串                        return sb.toString();                    }                    count = count + 2;                    sb = sb.append(cc);                } else {                    count = count + 1;                    sb = sb.append(cc);                }            } else {                break;            }        }        return sb.toString();    }    public static void main(String[] args) {        Test13 a = new Test13();        String sb = "人ABC们DEF";        System.out.println(a.truncateStr(sb, 6));    }}运行结果  人ABC
原创粉丝点击