A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 静默小和尚 中级黑马   /  2015-4-5 09:39  /  1930 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个太复杂了,谁能帮忙简化一下{: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);
                                }
                        }
                }
}

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

16 个回复

倒序浏览
抢沙发,表示不会
  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.         }
复制代码
回复 使用道具 举报
直接用字符串调用trim()方法就行
回复 使用道具 举报
我能说我昨天将String转化为char数组,在char数组中遍历进行判断,得到start,end,然后使用String方法截取,完成后结果正确,想想都累,最后,去看毕老师的视频,与2l差不多,我。。。。。,一把泪
回复 使用道具 举报
随缘就好 发表于 2015-4-5 09:44
抢沙发,表示不会

{:3_47:} 矫情!
回复 使用道具 举报
本帖最后由 王振光 于 2015-4-5 11:03 编辑

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


回复 使用道具 举报
站位。。。。
回复 使用道具 举报

不错,赞一个。加油
回复 使用道具 举报
jamesli 发表于 2015-4-5 10:35
我能说我昨天将String转化为char数组,在char数组中遍历进行判断,得到start,end,然后使用String方法截取 ...

{:3_53:} 我也表示惊吓到了{:3_60:}可怜我的手指
回复 使用道具 举报
二楼正解
回复 使用道具 举报
谢谢楼主分享。
回复 使用道具 举报
赶紧多虚心学习学习,多长点见识
回复 使用道具 举报
王振光 发表于 2015-4-5 11:02
你那个end 出现的位置有可能是中间的。。末尾没空格中间有空格的话。
2楼的方法大概意思就是从前面循环 碰 ...

{:3_51:}正解啊,王同学好厉害{:3_51:}
回复 使用道具 举报
学习了~
回复 使用道具 举报
我好想记得object中有个去除空格的方法来
回复 使用道具 举报
  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. }
复制代码

我是这样实现的
回复 使用道具 举报
沙发是正解,老毕的视频有,不过你的代码也挺有想法,很好!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马