截取字符串,含有汉字和字母,不能截半个汉字

/**
 * 2017年6月19日
 * 
 * 问题描述:
 *       编写一个截取字符串的函数,输入为一个字符串和字节数,
 *       输出为按字节截取的字符串。但是要保证汉字不被截半个,
 *       如"我ABC"4,应该截为"我AB",
 *       输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
 * 
 * 问题考察:
 *       1.字符串长度(字符数)与字节数的区别
 *       2.英文只占一个字节,中文占两个字节或者3个字节
 */
public class TestCut {
   
	public static void main(String[] args) {
		String str="我ABC汉DEF";
		str=cutString(str,6);
		System.out.println("截取的字符串:"+str);
	}
    
	//通过字节数截取字符串
	private static String cutString(String str, int i) {
		String tempStr=null;
		StringBuilder resultStr=new StringBuilder();
		int len=0;
		int sum=0;
		for(int j=0;j<str.length();j++){
			tempStr=String.valueOf(str.charAt(j));
			len=tempStr.getBytes().length;
			//判断是否是汉字
			if(len>1){
				sum=sum+len;
				//判断字节数是否已越界
				if(sum<=i){
					resultStr.append(tempStr);
				}else{
					break;
				}
			}else{
				sum=sum+1;
				if(sum<=i){
					resultStr.append(tempStr);
				}else{
					break;
				}
			}
		}
		return resultStr.toString();
	}
	
}


解决思路:1.通过字节数来判断是否中文(正如我上面使用的)

                2.中文的ASCII码是负数


面试的时候遇到这道题、居然不知道怎么做。可能前一段时间都在搞三大框架还有其他技术,却丢了Java基础,结果面试处处碰壁。

基础的东西很重要~ 慎记

2017-6-19 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值