怎么截取含有汉字的字符串而不出现半个字符?

scud 2002-01-18 11:05:47
加精
一个字符串,可能含有汉字

例如要限制最长为30个字符(一个汉字要算2个)

怎么玩?
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangtaoyy 2002-01-18
  • 打赏
  • 举报
回复
public class T{
public static void main(String[] a){
String s = "32452345234523452345阿萨沙沙打法沙沙";
byte[] bytes = s.getBytes();
String s1;
int i ;
for(i =29 ;i>=0; i--){
if(bytes[i] > 0)break;
}
if(i % 2 == 1)s1 =new String(bytes,0,30);
else s1 =new String(bytes,0,29);
System.out.println(s1);
}
}
OK!
hujun614 2002-01-18
  • 打赏
  • 举报
回复
以下这段代码是用PHP写的,能正常运行,要是你懂点的话,转过来用应该没有问题的。呵呵。
Function getshortstr($longstr,$len){
if(strlen($longstr)<=$len)
return $longstr;
$j = 0;$char=chr(128);
for($i=0;$i<$len-4;$i++){
if(substr($longstr,$i,1)>$char)
$j++;
}
if($j % 2==1)
return substr($longstr,0,$len-3) . "...";
if(substr($longstr,$len-4,1)<$char)
return substr($longstr,0,$len-3) . "...";
return substr($longstr,0,$len-4) . "...";
};

留个QQ:12953091以便联系。
scud 2002-01-18
  • 打赏
  • 举报
回复
问题是我要截取呀...怎么防止截取半个呀?

怎么判断是前半个汉字还是后半个汉字?
skyyoung 2002-01-18
  • 打赏
  • 举报
回复
取byte[],判断每个byte的高位,如果是1就是汉字,不是就是字母
scud 2002-01-18
  • 打赏
  • 举报
回复
怎么了?我已经结了呀
hexiaofeng 2002-01-18
  • 打赏
  • 举报
回复
?
hexiaofeng 2002-01-18
  • 打赏
  • 举报
回复
?

62,615

社区成员

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

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