黑马程序员技术交流社区

标题: 【黑马程序员济南】JavaEE基础阶段必会案例NO.3 [打印本页]

作者: 小鲁哥哥    时间: 2017-8-16 15:35
标题: 【黑马程序员济南】JavaEE基础阶段必会案例NO.3
本帖最后由 小鲁哥哥 于 2017-8-16 16:03 编辑

【黑马程序员济南】JavaEE基础阶段必会案例NO.3



黑马程序员课程内容丰富多样,每个知识点我们都设计有新奇的案例让大家练习。黑马程序员训练营的课程也是案例驱动教学,每天都会进行大量的代码练习。今天我们就来一起做一个基础阶段第8天的一个小案例。

         案例要求:有一个字符串" woaijavahahajavaaijavawjavao "去除两端空格,删除该字符串中所有的"java" 并且统计删除了多少个“java”

         案例分析:我们要用到的知识点:统计思想,String类的方法,循环控制

         分析完一个大概以后我们先回顾一下字符串的常用方法,看看我们需要用到哪几个.
         
[Java] 纯文本查看 复制代码
                //1 charAt 根据索引返回该位置的字符
                String s = "jixiaomeng";
                char c = s.charAt(6);
                System.out.println(c);//m
               
                //2 contains 传入字符串  判断是否包含该字符串
                boolean b = s.contains("jixiaomeng");
                System.out.println(b);//true
               
                //3 equals 是否相等   equalsIgnoreCase
                boolean b2 = s.equals("xiao");
                System.out.println(b2);//false
               
                //4 boolean endsWith(String suffix) startWith
                boolean b3 = s.endsWith("g");//jixiaomeng
                System.out.println(b3);//true
               
                //5 int indexOf(int ch) 小串再大串中第一次出现的索引
                //int lastIndexOf(String str)
                String s5 = "hwheimaloWorheimald";
                int i = s5.indexOf("heima");//2
                System.out.println(i);//2
                int i2 = s5.lastIndexOf("heima");
                System.out.println("i2= "+i2);//12
               
                //6 isEmpty 判断是否为空
                boolean b4 = s5.isEmpty();
                System.out.println("b4= "+b4);//false
               
                //7 length()长度
                int i3 = s5.length();
               
                //8,切割:split  返回的是字符串数组
                String s7 = "86-136 202 030 30";
                //{"86","13620203030"}
                String[] srr = s7.split(" ");
                for(int x=0;x<srr.length;x++){
                        System.out.println(srr[x]);
                }
               
                //9  截取:subString  截取一个字符串返回新的字符串,不影响之前的
                String s8 = "hwheimaloWorheimald";
                String s9 = "heima";
                int index = s8.indexOf(s9);//heima 的h第一次出现的索引
                int index2 = index+s9.length();
                System.out.println(index2);
                String s10 = s8.substring(index2);// 一个参数的方法:截取到末尾
                System.out.println(s10);
               
                String s11 = s8.substring(7,11);//lowo  包含7 不包含11
                System.out.println(s11);
               
                //10 toUpperCase变成大写   toLowerCase变成小写
               
                //11 trim 去除两端空格
               
                //12 toCharArray  把字符串转换成字符类型的数组
                char[] crr = s9.toCharArray();//heima
                //{'h','e','i','m','a'}
         
     ok,我们发现有个方法是去除空格的trim()方法。indexOf( ) 方法可以找到目标字符串,而substring()方法可以截取目标字符串。好,大概的思路已经有了,我们开始敲啦~~
      
     首先用trim方法去空格,注意,trim并不改变原字符串所以要重新赋值给s 这样s就没空格了,String类中很多方法都没有改变原字符串比如subsring  toUpperCase等等,一定要注意啊。
    然后我们用indexOf方法找到第一个java所在的索引,然后用substring方法截取java前后的字符串拼接成新的字符串再赋值给s,这样s中第一个java就神奇的被删除了,哈哈,  (其实一点也不神奇。。)
     ok,anyway,我们只要重复这个步骤就会删除所有的java,那你是不是想到了循环呢? 没错循环是个好帮手,但是一定要明确结束的条件。我们知道indexOf方法有个特点,如果大字符串中不存在查找的小字符串就会返回-1,我们正好利用这一点,好,开敲!
     
[Java] 纯文本查看 复制代码
public class Test {
        public static void main(String[] args) {
                String s = " woaijavahahajavaaijavawjavao ";
                s = s.trim();        //trim不改变原字符串
                int index = s.indexOf("java");//找到java的位置
                int count = 0;//统计删除了多少个java
                while(index!=-1){//当字符串中不再包含java时就会返回-1
                        s = s.substring(0,index)+s.substring(index+4);//截取java前后的字符串拼接成新字符串
                        index = s.indexOf("java");//继续找下一个java,直到返回-1
                        count ++;//计数器增加
                }
                System.out.println(s);
                System.out.println("删除了"+count+"个");//输出结果
        }
}
运行看一看:

    大功告成!
    这个案例作为一个经典案例用来复习String类方法,循环,计数器思想等等知识点非常不错,很新颖。其实,每个案例都有很多种写法,不同的人可能有不同的思路,比如这个题有的同学用replace方法 也就是替换方法,用空字符串替代java也可以实现删除java的目的。黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。


黑马!加油!




作者: mengqishiye    时间: 2017-8-16 16:11
深入浅出,欲罢不能。666
作者: jingxian90    时间: 2017-8-17 09:08
厉害,言简意赅,条理清晰,通俗易懂!我喜欢
作者: 小鲁哥哥    时间: 2017-8-24 15:33
mengqishiye 发表于 2017-8-16 16:11
深入浅出,欲罢不能。666

嘻嘻
作者: fashionkillyou    时间: 2017-9-22 19:25
不错不错
作者: 469019196    时间: 2018-11-23 00:01
public class case03 {
    public static void main(String[] args) {
        String s = " woaijavahahajavaaijavawjavao ";
        //去除两端空格
        String trim = s.trim();
        if (trim.contains("java")) {
            String[] javas = trim.split("java");
            String change="";
            for (String java : javas) {
                change+=java;
            }
            System.out.println(change);
            System.out.println("java的个数为" + (javas.length - 1));
        }else{
            System.out.println("该字符串中不包含java");
        }
    }
}
直接用spilt java java的个数等于长度减一





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