高分求助一编程题!(100分)
编写一个截取字符串的子数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,如“我 ABC”4,应该截为“我 AB”,输入“我 ABC 汉DEF”,6,应该输出为“我 ABC”而不是“我 ABC+汉的半个”。
请问如何编写?谢多各位指教!
问题点数:100、回复次数:8Top
1 楼wxwyes(老菜鸟)回复于 2005-02-18 16:08:51 得分 40
public static String subString(String str, int star, int end) {
if (str == null) {
return "";
}
str = str.trim();
StringBuffer r = new StringBuffer();
int l = str.length();
float count = 0;
for (int i = star; i < l; ++i) {
char c = str.charAt(i);
if (c > 255 || c < 0) {
++count;
r.append(c);
}
else {
count += 0.5;
r.append(c);
}
if (count >= end - star) {
break;
}
}
return r.toString();
}Top
2 楼wxwyes(老菜鸟)回复于 2005-02-18 16:10:09 得分 0
start 开始截取的位置,end 是结束的位置。Top
3 楼chinajava(chinajava)回复于 2005-02-18 16:19:00 得分 30
public String getString(String s,int len){
int length=0,index=0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)>128){
length+=2;
}
else{
length+=1;
}
index=i;
if(length>=len)break;
}
if(length>len)index--;
return s.substring(0,index+1);
}Top
4 楼wanglongjiang(王龙江)回复于 2005-02-18 16:35:43 得分 10
楼主对java中的String理解有误,String中不管是英文字符还是汉字都使用UNICODE编码占两个字节,
不会出现截取半个汉字的现象,如:
"我abc".substring(0,4)=="我abc"
"我ABC汉DEF".substring(0,5)=="我ABC汉"Top
5 楼mydreamkyle(mydreamfly)回复于 2005-02-18 16:39:08 得分 10
判断你最后取得那一位是否在字母之间,如果不是就退一位。Top
6 楼longwing(龙星吾)回复于 2005-02-18 18:32:41 得分 10
JAVA用unicode全部字符都是16位的 不会出现截断一半的问题Top
7 楼computeriloveyou(想成为编程高手(小女子))回复于 2005-02-18 21:38:42 得分 0
各位新年快乐!不知你们哪个说得是对的,不过还是个个都得分!
新年嘛,你们这么好心帮我,我会给分的!~
不管如何还是谢谢各位了!Top
8 楼billowcn(破浪长风)回复于 2005-02-19 12:04:43 得分 0
public static String changeValue(String inValue,int valueLong){
String returnValue = "";
int n = 0;
for(int i = 0;i<inValue.length();i++){
char a = inValue.charAt(i);
byte[] b =String.valueOf(a).getBytes();
if (b.length==2){
n++;
}
returnValue += a;
if (n>=valueLong) break;
n++;
}
return returnValue;
}Top




