编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
Posted on 2009-04-23 17:08 钟悍 阅读(1884) 评论(0) 编辑 收藏 举报在网上以前流传的代码是这样的:
class SplitString {
String SplitStr;
int SplitByte;public SplitString(String str, int bytes) {
SplitStr = str;
SplitByte = bytes;
System.out.println("The String is:′" + SplitStr + "′;SplitBytes="
+ SplitByte);
}
public void SplitIt() {
int loopCount;
loopCount = (SplitStr.length() % SplitByte == 0) ? (SplitStr.length() / SplitByte)
: (SplitStr.length() / SplitByte + 1);
System.out.println("Will Split into " + loopCount);
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文dsdg老师的看见发lkjd", 5);
ss.SplitIt();
}
}
我改进后的代码:
class SplitString {
String SplitStr;
int SplitByte;public SplitString(String str, int bytes) {
SplitStr = str;
SplitByte = bytes;
System.out.println("The String is:′" + SplitStr + "′;SplitBytes="
+ SplitByte);
}
public static void main(String[] args) {
SplitString ss = new SplitString(
"test中dd文fasjaslkjdfalsjf师的看见发lkjd",4);
ss.split();
}
public void split() {
for (int i = 0, len = SplitStr.length(); i < len; i = i + SplitByte) {
if (i + SplitByte < len) {
System.out.println(SplitStr.substring(i, i + SplitByte));
}
else {
System.out.println(SplitStr.substring(i, len));
}
}
}
}