Java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串

来源:互联网 发布:网络播放器安装电视猫 编辑:程序博客网 时间:2024/06/05 04:39

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

         如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”

/** *  * @param src *            传入字符串 * @param len *            截取字节数 * @param encoding *            编码 * @return 返回截取后的字符串 */public static String getSubStrings(String src, int len, String encoding) {// 判断是否为空if (src == null||len < 1)return null;// 字符串对象StringBuffer buf = new StringBuffer();// 累计个数int count = 0;// 遍历字符for (int i = 0; i < src.length(); i++) {// 截取每个字符String tmp = src.substring(i, i + 1);// 追加字符串buf.append(tmp);//byte[] tmpB;try {// 将字符串转成字节数组tmpB = tmp.getBytes(encoding);// 统计字节个数count += tmpB.length;// 如果大于传入的个数if (count >= len) {break; // 停止循环}} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return buf.toString();}
       测试
public static void main(String[] args) {//注意:gbk编码中文(一个汉字占两个字节)System.out.println(getSubStrings("我ABC汉DEF", 4,"gbk"));//注意:utf-8编码中文(一个汉字占三个字节)System.out.println(getSubStrings("我ABC汉DEF", 4,"utf-8"));//System.out.println(getSubStrings("我Q爱中华ABC我爱中国DWE", 6,"utf-8"));}
     结果:
我AB我A

   
0 0
原创粉丝点击