JAVA笔试题

wqs1106 2007-11-19 10:24:31
15、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
...全文
258 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkbuchaladi 2007-11-22
  • 打赏
  • 举报
回复
mark
roypayne 2007-11-21
  • 打赏
  • 举报
回复

为什么这里 currentIndex + 1要加1
tmpStr = resourceStr.substring(lastEndIndex, currentIndex + 1);

tmpStr = resourceStr.substring(lastEndIndex, currentIndex);
这里没有
roypayne 2007-11-21
  • 打赏
  • 举报
回复
issgates一直很安静 写的真棒.

cd_tiger的,我不太能理解...解释下,谢谢.
G_B 2007-11-21
  • 打赏
  • 举报
回复
路过学习
wqs1106 2007-11-20
  • 打赏
  • 举报
回复
怎么结贴~怎么给cd_tiger加分
wqs1106 2007-11-20
  • 打赏
  • 举报
回复
cd_tiger的思路是正确的
jk88811 2007-11-20
  • 打赏
  • 举报
回复
对Unicode和字符集缺乏清晰的认识...
dxlove 2007-11-20
  • 打赏
  • 举报
回复
汉字与字母都是Unicode
可以按字符来处理
就可以了啦!
搞得那么多干什么咯?
roypayne 2007-11-20
  • 打赏
  • 举报
回复
请大家说一下思路,谢谢

roypayne 2007-11-20
  • 打赏
  • 举报
回复
# cd_tiger 写的很简洁,

加我QQ:10988142 聊聊!
zbl0201 2007-11-20
  • 打赏
  • 举报
回复

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()/Split



Byte+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文dsaf中男大3443n中国43中国人



0ewldfls=103",4);

ss.SplitIt();

}

}



xwj1003 2007-11-20
  • 打赏
  • 举报
回复
JAVA不是UNICODE吗?
汉字占一个字符。
issgates 2007-11-20
  • 打赏
  • 举报
回复

/**
* 按字节分割字串, 例如以每10个字节为一段
* @param resourceStr String 原字符串
* @param byteCntPerUnit int 每单位字节数
* @return ArrayList 返回切分后的list
*/
public static ArrayList splitStringByByte(String resourceStr, int byteCntPerUnit) {
ArrayList list = new ArrayList();
String tmpStr = null;

int strLength = resourceStr.length();

int currentIndex = 0;
int lastEndIndex = 0;
while (lastEndIndex < strLength - 1) {
for (currentIndex = lastEndIndex; currentIndex < strLength; currentIndex++) {
tmpStr = resourceStr.substring(lastEndIndex, currentIndex + 1);
if (tmpStr.getBytes().length > byteCntPerUnit) {
break;
}
}
tmpStr = resourceStr.substring(lastEndIndex, currentIndex);
list.add(tmpStr);
lastEndIndex = currentIndex;
}
return list;
}

以上相似, 供参考!
cd_tiger 2007-11-20
  • 打赏
  • 举报
回复
各位那么看的起我,我很感谢,其实我很郁闷拉,失业了!和老东家分手了!!
lanhai6666 2007-11-20
  • 打赏
  • 举报
回复
路过!
cd_tiger 2007-11-19
  • 打赏
  • 举报
回复
有此问题我想到了另外一套题可用相似的方法来解决:
问题描述:
将一个字符串中的中文子串提取出来,字符串的格式类似如下:
"abc 我love你 123 我也爱你 al5 爱的就是你" 中间用空格隔开
我的思路如下:

package org.mypack2;

import java.util.ArrayList;
import java.util.List;


public class Intercept {

public static Object[] pickup(String str) {
String[] strs = str.split(" ");
List<String> pickupList = new ArrayList<String>();
for(String st : strs) {
if((st.length()*2)==(st.getBytes().length)) {
pickupList.add(st);
}
}
return pickupList.toArray();

}

public static void main(String[] args) {

String str= "abc 我love你 123 我也爱你 al5 爱的就是你";
Object[] strs = Intercept.pickup(str);
for(Object st : strs) {
System.out.println(st.toString());
}
}

}

各位有什么其它意见???
cd_tiger 2007-11-19
  • 打赏
  • 举报
回复

public class Intercept {

public static String intercept(String str,int len) throws Exception {

byte[] bytes = str.getBytes();
System.out.println(bytes.length);
if(bytes.length<len) {
throw new Exception("你的字符串没那么长");
}
char[] chars = str.toCharArray();
StringBuffer sb = new StringBuffer();
for(int i = 0;i<len;) {
if(String.valueOf(chars[i]).getBytes().length==1) {
sb.append(chars[i]);
i++;
continue;
}
if(String.valueOf(chars[i]).getBytes().length==2) {
if((i+2)<len) {
sb.append(chars[i]);
i++;
len--;
}
else {
break;
}
}
}


return sb.toString();
}

public static void main(String[] args) {
try {
String str = Intercept.intercept("我ABC汉DEF", 6);
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
}

}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧