本帖最后由 小鲁哥哥 于 2017-8-16 16:03 编辑
【黑马程序员济南】JavaEE基础阶段必会案例NO.3
黑马程序员课程内容丰富多样,每个知识点我们都设计有新奇的案例让大家练习。黑马程序员训练营的课程也是案例驱动教学,每天都会进行大量的代码练习。今天我们就来一起做一个基础阶段第8天的一个小案例。 案例要求:有一个字符串" woaijavahahajavaaijavawjavao "去除两端空格,删除该字符串中所有的"java" 并且统计删除了多少个“java”
案例分析:我们要用到的知识点:统计思想,String类的方法,循环控制
分析完一个大概以后我们先回顾一下字符串的常用方法,看看我们需要用到哪几个. [Java] 纯文本查看 复制代码 //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] 纯文本查看 复制代码 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的目的。黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。
黑马!加油!
|