CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

高分求助一编程题!(100分)

楼主computeriloveyou(想成为编程高手(小女子))2005-02-18 15:52:15 在 Java / J2SE / 基础类 提问

编写一个截取字符串的子数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,如“我   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

相关问题

  • 一道编程题 ,(高分)
  • 高分求助:串口编程问题
  • 高分请教Delphi Socket 编程问题
  • !高分,关于cg编程的问题!
  • 高分求解DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit编程问题
  • socket编程问题---50分
  • JSF高级编程问题
  • JSF高级编程问题
  • 关于modem编程(VISUAL C++)的问题!送高分喔!
  • 高分求教线程与Socket编程的问题!

关键词

  • 汉字
  • star
  • 截取
  • 字符串
  • abc
  • 汉
  • substring
  • len
  • length
  • str

得分解答快速导航

  • 帖主:computeriloveyou
  • wxwyes
  • chinajava
  • wanglongjiang
  • mydreamkyle
  • longwing

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo