锁定老帖子 主题:面试题:编写一个截取字符串的函数
精华帖 (0) :: 良好帖 (4) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-10
最后修改:2011-05-10
是不是出这个题目的人自己也没弄懂,在java里面,如果是默认的字符集,普通字符是占1个字节,而汉字是占3个字节的。java的char类型本来就不区分是一个字节还是几个字节。
|
|
返回顶楼 | |
发表时间:2011-05-10
分析的很好,受教了,但作为面试题,我想可能不是这么复杂,
对方考你的可能仅仅是让写段程序. 1\将拿到的String to char[] 2\for循环取得每个char判断字节长度 3\根据所给的限制字节数,只返回限制字节数范围内的字符串 |
|
返回顶楼 | |
发表时间:2011-05-10
n年前的题目再现江湖
|
|
返回顶楼 | |
发表时间:2011-05-10
可以学到东西。
|
|
返回顶楼 | |
发表时间:2011-05-10
把简历要回来 潇洒地走掉 留下寂寞的背影让HR感叹:这年头人不好招啊
|
|
返回顶楼 | |
发表时间:2011-05-10
楼主分析的好,学习了。
|
|
返回顶楼 | |
发表时间:2011-05-10
貌似是参考《JAVA面试题解惑系列》,我再复习一遍吧
|
|
返回顶楼 | |
发表时间:2011-05-10
java_user 写道 是不是出这个题目的人自己也没弄懂,在java里面,如果是默认的字符集,普通字符是占1个字节,而汉字是占3个字节的。java的char类型本来就不区分是一个字节还是几个字节。
纯粹胡说。 |
|
返回顶楼 | |
发表时间: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("超过字节数!"); } |
|
返回顶楼 | |
发表时间: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)); } }
|
|
返回顶楼 | |