黑马程序员技术交流社区

标题: 去除字符串两端的空格 [打印本页]

作者: 静默小和尚    时间: 2015-4-5 09:39
标题: 去除字符串两端的空格
这个太复杂了,谁能帮忙简化一下{:3_65:}{:3_65:}

public class StringTest
{
        /**
         * @Description:模拟String的trim()方法,消除字符串两端的空格
         */
        public static void main(String[] args)
                {
                        String str = " iuewqoirksadf ";
               
                        int first = str.indexOf("");//首次出现空格的位置
                        int end = str.lastIndexOf("");//最后一个出现空格的位置
               
                        while(first==0||end==str.length())
                        {//开头或者末尾有空格
                                if(first==0)
                                {
                                        str = str.substring(1, str.length());//字符串重新赋值,将开头空格后面的所有的字符剪切
                                        first = str.indexOf(" ");//重新赋值
                                        end = str.lastIndexOf(" ");//重新赋值
                                        System.out.println("开头的空格去除后--》"+str);
                                }
                                if(end==str.length()-1)
                                {
                                        str = str.substring(0, str.length()-1);
                                        first = str.indexOf(" ");
                                        end = str.lastIndexOf(" ");
                                        System.out.println("末尾的空格去除后--》"+str);
                                }
                        }
                }
}

作者: 随缘就好    时间: 2015-4-5 09:44
抢沙发,表示不会
  1. public static String myTrim(String str)
  2.         {
  3.                 int start = 0,end = str.length()-1;

  4.                 while(start<=end && str.charAt(start)==' ')
  5.                         start++;

  6.                 while(start<=end && str.charAt(end)==' ')
  7.                         end--;

  8.                 return str.substring(start,end+1);
  9.         }
复制代码

作者: 万合天宜    时间: 2015-4-5 09:50
直接用字符串调用trim()方法就行
作者: jamesli    时间: 2015-4-5 10:35
我能说我昨天将String转化为char数组,在char数组中遍历进行判断,得到start,end,然后使用String方法截取,完成后结果正确,想想都累,最后,去看毕老师的视频,与2l差不多,我。。。。。,一把泪
作者: 静默小和尚    时间: 2015-4-5 10:42
随缘就好 发表于 2015-4-5 09:44
抢沙发,表示不会

{:3_47:} 矫情!
作者: 王振光    时间: 2015-4-5 11:02
本帖最后由 王振光 于 2015-4-5 11:03 编辑

你那个end 出现的位置有可能是中间的。。末尾没空格中间有空格的话。
2楼的方法大概意思就是从前面循环 碰到不是空的就结束。然后从后面开始判断  end--  不是空的就结束
  中间的空格就没有判断到了。
得到2个值然后substring就行了。。



作者: 43453186@qq.com    时间: 2015-4-5 11:16
站位。。。。
作者: shw16888    时间: 2015-4-5 11:19

不错,赞一个。加油
作者: 静默小和尚    时间: 2015-4-5 11:24
jamesli 发表于 2015-4-5 10:35
我能说我昨天将String转化为char数组,在char数组中遍历进行判断,得到start,end,然后使用String方法截取 ...

{:3_53:} 我也表示惊吓到了{:3_60:}可怜我的手指
作者: 栗子木头    时间: 2015-4-5 11:36
二楼正解
作者: 胡几手    时间: 2015-4-5 12:46
谢谢楼主分享。
作者: lf027    时间: 2015-4-5 16:18
赶紧多虚心学习学习,多长点见识
作者: 静默小和尚    时间: 2015-4-5 16:46
王振光 发表于 2015-4-5 11:02
你那个end 出现的位置有可能是中间的。。末尾没空格中间有空格的话。
2楼的方法大概意思就是从前面循环 碰 ...

{:3_51:}正解啊,王同学好厉害{:3_51:}
作者: 黑色救护车    时间: 2015-4-5 17:07
学习了~
作者: 海贼王019    时间: 2015-4-5 17:19
我好想记得object中有个去除空格的方法来
作者: 若果每天都努力    时间: 2015-4-5 17:22
  1. //模拟trim()方法
  2. public static void test1() {
  3.         String s = "abcdhelloeurtueorhdkabdfas";
  4.         String key = "wervhelloas";
  5.         int count = 0;
  6.         while (s.indexOf(key) != -1) {
  7.                 int i = s.indexOf(key);
  8.                 s = s.substring(i + 1);
  9.                 count++;
  10.         }
  11.         System.out.println(count);
  12. }
复制代码

我是这样实现的
作者: silencelj    时间: 2015-4-7 12:41
沙发是正解,老毕的视频有,不过你的代码也挺有想法,很好!




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