package com.zsw.string; /** * 请编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不截半个,例如"我ABC"和4,应该截为 "我AB";输入"ABC汉DEF"和6,应该输出为"我ABC",而不会出现汉字截取错误 * @author zsw * 2010年3月1日2:06:28 */ public class SplitString { String splitStr; int splitByte; public SplitString(String str,int bytes){ this.splitStr =str; this.splitByte = bytes; } public void splitIt(){ int loopCount; loopCount = (splitStr.length()%splitByte == 0)?(splitStr.length()/splitByte):(splitStr.length()/splitByte+1); for (int i = 1; i <= loopCount; i++) { if(i==loopCount){ System.out.println(splitStr.substring((i-1)*splitByte, splitStr.length())); }else { System.out.println(splitStr.substring((i-1)*splitByte, i*splitByte)); } } } public static void main(String[] args) { SplitString ss = new SplitString("test中dd问bddjfdfkeke大家分开s大家dehk的负担[火花]康康",5); ss.splitIt(); } } /* test中 dd问bd djfdf keke大 家分开s大 家dehk 的负担[火 花]康康 */ 这题容易让人产生困惑的是中文字符和英文字符。可能其他变成语言经验的求职者会考虑汉字和英文字符的占用字节数,这样就多余了,因为 java使用了Unicode 编码,即汉字和英文字符占用的字节是一样的。理解这点就容易做出来了