- package com.itheima;
- import java.io.IOException;
- /**
- *第十题: 编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表),
- 例如:从“HM程序员”中截取2个字节是“HM”,截取4个则是“HM程”,
- 截取3个字节也要是"HM"而不要出现半个中文
- * @author Administrator
- */
- public class Test10
- {
- public static void main(String[] args) throws IOException
- {
- String s = "HM程序员";
- System.out.println("原始字符串:" + s);
- System.out.println("截取1个字节:"+subStr(s,1));
- System.out.println("截取2个字节:"+subStr(s,2));
- System.out.println("截取3个字节:"+subStr(s,3));
- System.out.println("截取4个字节:"+subStr(s,4));
- }
- public static String subStr(String str, int len) throws IOException
- {
- if (str == null && "".equals(str))
- {
- System.out.println("请不要输入空串!");
- return str;
- }
- else
- {
- int num = len;//截取字节数
- //定义变量src,接收截取的子串
- String src = str.substring(0, len>str.length() ? str.length() : len);
- //定义变量bys,接收截取的子串src的字节长度
- int bys = src.getBytes("GBK").length;
- //说明截取的字符串中包含有汉字
- while (bys > num)
- {
- int cutLen = --len;
- src = str.substring(0, cutLen>str.length() ? str.length() : cutLen);
- bys = src.getBytes("GBK").length;
- }
- return src;
- }
- }
- }
复制代码 之前在网上看到了关于这题的一些代码,基本上都是有很大问题的,反正我是没有找到完全正确的代码的,后来我也是参见了一些别人的原理,写了这个代码,应该是没有什么问题了
代码: |