黑马程序员技术交流社区

标题: 模拟trim方法,去除字符串两端空格 [打印本页]

作者: Cola    时间: 2013-11-28 20:27
标题: 模拟trim方法,去除字符串两端空格
模拟trim方法,去除字符串两端空格,while中用startsWith和endsWith判断,请问为什么没出现想要的结果呢?
  1. class StringTest1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s="      ab  cd     ";
  6.                 //sop(s);
  7.                 String s1=myTrim1(s);
  8.                 sop(s1);

  9.         }
  10.         public static void sop(Object obj)
  11.         {
  12.                 System.out.println(obj);
  13.         }

  14.         public static String myTrim1(String str)
  15.         {
  16.                 int start=0;
  17.                 int end=str.length()-1;
  18.                 while(start<=end&&str.startsWith(" "))
  19.                 {
  20.                         start++;
  21.                 }
  22.                 while(start<=end&&str.endsWith(" "))
  23.                 {
  24.                         end--;
  25.                 }
  26.                 sop(start);
  27.                 sop(end);
  28.                 str=str.substring(start,end+1);
  29.                 return str;
  30.         }

  31. }
复制代码




作者: 侠客梦的懒猫    时间: 2013-11-28 22:11
while中用startsWith和endsWith判断,你的start在增加没错,但是你并没有将你得到的新字符串覆盖原来的字符串
对于第一个while,应改一下:
start++;
str=str.substring(start, str.length());
//测试
System.out.println(str);

对于第二个while,也要改一下:
   end=str.length()-1;
  str=str.substring(start,end);
  System.out.println(str);
这样并没有解决@Cola你的问题,输出结果为ad    cd,中间没去掉,希望给你带来一点思路。

我的思路与你这个不一样,这是我实现的代码,
  1. package heima;

  2. public class StringTest2 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub

  8.                 String s="      ab  cd     ";
  9.                 System.out.println(mytrim(s));
  10.         }

  11.         public static String mytrim(String str)
  12.         {
  13.           
  14.             
  15.                 //生成新的字符串
  16.            char[]  newstr=new char[str.length()];
  17.            //计数
  18.            int count=0;
  19.            for(int i=0;i<str.length();i++)
  20.            {
  21.                    char c=str.charAt(i);
  22.                    if(c!=' ')
  23.                    {
  24.                           newstr[count]=c;
  25.                           count++;
  26.                    }
  27.            }
  28.         return new String(newstr,0,count);
  29.           
  30.         }
  31. }
复制代码



作者: FFF    时间: 2013-12-2 00:16
同学、问题已经解决了吗?
如果没有、就去新版28期问吧,26~27已经结束了。开班了!
http://bbs.itheima.com/forum-165-1.html

如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~

作者: Cola    时间: 2013-12-2 13:14
FFF 发表于 2013-12-2 00:16
同学、问题已经解决了吗?
如果没有、就去新版28期问吧,26~27已经结束了。开班了!
http://bbs.itheima.co ...

去28期提问了,谢谢。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2