黑马程序员济南中心JavaEE基础阶段必会案例NO.3
黑马程序员课程内容丰富多样,每个知识点我们都设计有新奇的案例让大家练习。黑马程序员训练营的课程也是案例驱动教学,每天都会进行大量的代码练习。今天我们就来一起做一个基础阶段第8天的一个小案例。
案例要求:有一个字符串" woaijavahahajavaaijavawjavao "去除两端空格,删除该字符串中所有的"java" 并且统计删除了多少个“java”
案例分析:我们要用到的知识点:统计思想,String类的方法,循环控制
分析完一个大概以后我们先回顾一下字符串的常用方法,看看我们需要用到哪几个.
[Java] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | //1 charAt 根据索引返回该位置的字符[/align] 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] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | public class Test {[/align] 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的目的。黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。
黑马!加油!