按字节截取字符串 (有汉字)

package oj.test;


import java.math.BigInteger;
import java.util.*;

public class Demo11 {

 /*
  *按字节截取字符串
  *编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,
  *应该截为"我AB",输入"我ABC汉DEF"6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
  */
 
  public static void main(String[] args) { 
   Scanner sc = new Scanner(System.in);
   String str = sc.nextLine();
   int n = sc.nextInt();
   String str2 = subStingByBytes(str,n);
   sop(str2);
  
}

   private static String subStingByBytes(String str, int len) {
    
    String result = null;
    if(str!=null){
     byte[] a = str.getBytes();
     if(a.length<=len)
      result = str;
     else if(len>0){
      result = new String(a,0,len);
      int length = result.length();
      //if(str.charAt(length-1)!=result.charAt(length)-1){
      if( !((str.charAt(length-1)>='0' && str.charAt(length-1)<='9') || (str.charAt(length-1)>='A' && str.charAt(length-1)<='Z') ||(str.charAt(length-1)>='a' && str.charAt(length-1)<='z') )){
       if(length<2)
        result = null;
       else
        result = result.substring(0, length-1);
      }
     }
    }
    return result;
}

 public static void sop(Object o){
    System.out.println(o);
   }


 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值