论坛首页 Java企业应用论坛

面试题:编写一个截取字符串的函数

浏览 20301 次
精华帖 (0) :: 良好帖 (4) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-05-10   最后修改:2011-05-10
是不是出这个题目的人自己也没弄懂,在java里面,如果是默认的字符集,普通字符是占1个字节,而汉字是占3个字节的。java的char类型本来就不区分是一个字节还是几个字节。
0 请登录后投票
   发表时间:2011-05-10  
分析的很好,受教了,但作为面试题,我想可能不是这么复杂,

对方考你的可能仅仅是让写段程序.
1\将拿到的String to char[]
2\for循环取得每个char判断字节长度
3\根据所给的限制字节数,只返回限制字节数范围内的字符串
0 请登录后投票
   发表时间:2011-05-10  
n年前的题目再现江湖
0 请登录后投票
   发表时间:2011-05-10  
可以学到东西。
0 请登录后投票
   发表时间:2011-05-10  
把简历要回来 潇洒地走掉 留下寂寞的背影让HR感叹:这年头人不好招啊
0 请登录后投票
   发表时间:2011-05-10  
楼主分析的好,学习了。
0 请登录后投票
   发表时间:2011-05-10  
貌似是参考《JAVA面试题解惑系列》,我再复习一遍吧
0 请登录后投票
   发表时间:2011-05-10  
java_user 写道
是不是出这个题目的人自己也没弄懂,在java里面,如果是默认的字符集,普通字符是占1个字节,而汉字是占3个字节的。java的char类型本来就不区分是一个字节还是几个字节。


纯粹胡说。
0 请登录后投票
   发表时间:2011-05-10  
我来写一个
public static void cutByByteLength(String s, int byteLength) {
		String str[] = s.split("");
		int sum = 0;
		for (int i = 1; i < str.length; i++) {
			sum = sum + str[i].getBytes().length;
			if (sum == byteLength) {
				System.out.println(s.substring(0, i));
				break;
			} else if (sum > byteLength) {
				System.out.println(s.substring(0, byteLength - 1));
				break;
			}
		}
		System.out.println("超过字节数!");
	}

0 请登录后投票
   发表时间:2011-05-10  
public class TestChar {

	public static String cutString(String text,int count){
		char[] ch = text.toCharArray();
		String a = "";
		int j = 0;
		for(int i = 0;i<count;i++){
			try {
				int size = String.valueOf(ch[i]).getBytes("GB2312").length;
				if(size > 1){
					j=j+2;
					if(j>count){
						break;
					}else{
						a+=ch[i];
					}
				}else{
					j++;
					if(j>count){
						break;
					}else{
						a+=ch[i];
					}
				}
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return a;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String text = "我ABC汉DEF";
		System.out.println(cutString(text,6));

	}
}

 

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics