字符串截取

Nature_cworkplace 2010-06-12 09:38:46
编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

请各位前辈给个解题思路,代码给不给无所谓。谢拉
...全文
146 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
windforce9811 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ivorytower 的回复:]
汉字占两个字节,直接使用以下方法判断

Java code

public static boolean chinese(char c){
if(String.valueOf(c).getBytes().length == 2)
return true;
return false;
}
[/Quote]
+1
izard999 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 goldenfish1919 的回复:]
java里面一个字符占两个字节,英文字符的高8位都是0,汉字不是0
[/Quote]
这个思路已经足够你把题目做出来了.!
love1907 2010-06-13
  • 打赏
  • 举报
回复
哪个说的,都是在乱说,这个跟编码有关系,所以实现起来很麻烦...
kyousuke 2010-06-12
  • 打赏
  • 举报
回复
这样的例子真的太多了,这次不作回复
dddddz 2010-06-12
  • 打赏
  • 举报
回复
太少分啦
java_piao 2010-06-12
  • 打赏
  • 举报
回复
这样的例子真的太多了,这次不作回复。
  • 打赏
  • 举报
回复
汉字占两个字节,直接使用以下方法判断

public static boolean chinese(char c){
if(String.valueOf(c).getBytes().length == 2)
return true;
return false;
}
wzju64676266 2010-06-12
  • 打赏
  • 举报
回复
String str2 = "啊啊56d的飞啊";
int isize =6;
int endIndex = isize / 2;
String sub = str2.substring(0, endIndex);
while (sub.getBytes().length < isize) {
if(isize-sub.getBytes().length>=2)
{
endIndex=endIndex+(isize-sub.getBytes().length)/2;
}
else
{
endIndex++;
}

String temp = str2.substring(0, endIndex);
if(temp.getBytes().length-1==isize)
{
break;
}
else
{
sub=temp;
}
}
System.out.println(sub);
dxawjatfj 2010-06-12
  • 打赏
  • 举报
回复
我有一个笨办法,就是将输入的字符串转换成字符数组,然后将字节数对应的字符数组中的那个字符拿出来与做比较,如果字节数对应的那个字符的数字大于255就表示是2个字节,也就是说不是英文字母了.然后就可以得出这个字符数组中要截取的字符了. (例如:字节数为6,将字符串转换为字符数组后,将字符数组下标为5的那个字符拿出来做比较,大于255就截取下标0到4个的字符,小于255就截取下标0到5的字符)
若鱼1919 2010-06-12
  • 打赏
  • 举报
回复
java里面一个字符占两个字节,英文字符的高8位都是0,汉字不是0

62,614

社区成员

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

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