- //编写函数,从一个字符串中按字节数截取一部分,但不能截取出半个中文(GBK码表)
- public class Test {
- public static void main(String[] args) throws Exception {
- String str = "HM程序员h";
- System.out.println(demo(str,7));
- }
- public static String demo(String str,int num) throws Exception{
- byte[] b = str.getBytes("GBK");
- if(num<=b.length){
- if(str.contains(new String(b,0,num))){ //因为GBK里面中文是2个字节,字母是1个字节,如果取出的正确的打字符串里肯定会包含(contians方法)该子串
- //因为取出的有问题的话肯定不会包含改子串
- return new String(b,0,num); //没问题就直接返回截取的
- }
- else{
- return new String(b,0,num-1); //有问题的话就说明截取到半个中文了,然后减一个字节就好了
- }
- }
- return "";
- }
- }
复制代码 |