1. String类的获取功能
int length() // 获取字符串中字符的个数(长度)
char charAt(int index)//根据位置获取字符
int indexOf(int ch)//获取字符ch在字符串中第一次出现的位置索引
int indexOf(String str)//获取str在字符串中第一次出现的位置
int indexOf(int ch, int fromIndex)//从指定位置from查找ch第一次出现的位置索引
int indexOf(String str,int fromIndex)//从指定位置from查找字符串str第一次出现的位置索引
int lastIndexOf(int ch)//获取字符ch在字符串中最后出现的位置索引
int lastIndexOf(int ch, int from)//从指定位置from查找ch最后出现的位置索引
int lastIndexOf(String str)//获取str在字符串最后出现的位置
int lastIndexOf(String str, int index)//从指定位置from查找str最后出现位置
//获取字符串的一部分
String substring(int start)
String substring(int start,int
2. 案例:
1 package cn.itcast_04;
2
3 /*
4 * String类的获取功能
5 字符串的长度。
6 指定索引位置的字符
7 指定字符在此字符串中第一次出现处的索引。
8 * 为什么这里是int类型,而不是char类型?
9 * 原因是:'a'和97其实都可以代表'a'
10 指定字符串在此字符串中第一次出现处的索引。
11 指定字符在此字符串中从指定位置后第一次出现处的索引。
12 指定字符串在此字符串中从指定位置后第一次出现处的索引。
13 指定位置开始截取字符串,默认到末尾。
14 指定位置开始到指定位置结束截取字符串。
15 */
16 public class StringDemo {
17 public static void main(String[] args) {
18 // 定义一个字符串对象
19 String s = "helloworld";
20
21 // int length():获取字符串的长度。
22 System.out.println("s.length:" + s.length());
23 System.out.println("----------------------");
24
25 // char charAt(int index):获取指定索引位置的字符
26 System.out.println("charAt:" + s.charAt(7));
27 System.out.println("----------------------");
28
29 // int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
30 System.out.println("indexOf:" + s.indexOf('l'));
31 System.out.println("----------------------");
32
33 // int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
34 System.out.println("indexOf:" + s.indexOf("owo"));
35 System.out.println("----------------------");
36
37 // int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
38 System.out.println("indexOf:" + s.indexOf('l', 4));
39 System.out.println("indexOf:" + s.indexOf('k', 4)); // -1
40 System.out.println("indexOf:" + s.indexOf('l', 40)); // -1
41 System.out.println("----------------------");
42
43 // 自己练习:int indexOf(String str,int
44 // fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
45
46 // String substring(int start):从指定位置开始截取字符串,默认到末尾。包含start这个索引
47 System.out.println("substring:" + s.substring(5));
48 System.out.println("substring:" + s.substring(0));
49 System.out.println("----------------------");
50
51 // String substring(int start,int
52 // end):从指定位置开始到指定位置结束截取字符串。包括start索引但是不包end索引
53 System.out.println("substring:" + s.substring(3, 8));
54 System.out.println("substring:" + s.substring(0, s.length()));
55 }
56
运行结果:
3. 小案例
(1)字符串遍历
1 package cn.itcast_04;
2
3 /*
4 * 需求:遍历获取字符串中的每一个字符
5 *
6 * 分析:
7 * A:如何能够拿到每一个字符呢?
8 * char charAt(int index)
9 * B:我怎么知道字符到底有多少个呢?
10 * int length()
11 */
12 public class StringTest {
13 public static void main(String[] args) {
14 // 定义字符串
15 String s = "helloworld";
16
17 // 原始版本
18 // System.out.println(s.charAt(0));
19 // System.out.println(s.charAt(1));
20 // System.out.println(s.charAt(2));
21 // System.out.println(s.charAt(3));
22 // System.out.println(s.charAt(4));
23 // System.out.println(s.charAt(5));
24 // System.out.println(s.charAt(6));
25 // System.out.println(s.charAt(7));
26 // System.out.println(s.charAt(8));
27 // System.out.println(s.charAt(9));
28
29 // 只需要我们从0取到9
30 // for (int x = 0; x < 10; x++) {
31 // System.out.println(s.charAt(x));
32 // }
33
34 // 如果长度特别长,我不可能去数,所以我们要用长度功能
35 for (int x = 0; x < s.length(); x++) {
36 // char ch = s.charAt(x);
37 // System.out.println(ch);
38 // 仅仅是输出,我就直接输出了
39 System.out.println(s.charAt(x));
40 }
41 }
42
(2)统计大小写字母、数字字符的个数
分析:• 定义三个统计变量:bigCount = 0,smallCount = 0,numberCount = 0
• 遍历字符串,得到每一个字符:length() 和 charAt()结合
• 判断该字符到底是属于那种类型的:
大写:bigCount++
小写:smallCount++
数字:numberCount++
1 package cn.itcast_04;
2
3 /*
4 * 需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
5 * 举例:
6 * "Hello123World"
7 * 结果:
8 * 大写字符:2个
9 * 小写字符:8个
10 * 数字字符:3个
11 *
12 * 分析:
13 * 前提:字符串要存在
14 * A:定义三个统计变量
15 * bigCount=0
16 * smallCount=0
17 * numberCount=0
18 * B:遍历字符串,得到每一个字符。
19 * length()和charAt()结合
20 * C:判断该字符到底是属于那种类型的
21 * 大:bigCount++
22 * 小:smallCount++
23 * 数字:numberCount++
24 *
25 * 这道题目的难点就是如何判断某个字符是大的,还是小的,还是数字的。
26 * ASCII码表:
27 * 0 48
28 * A 65
29 * a 97
30 * 虽然,我们按照数字的这种比较是可以的,但是想多了,有比这还简单的
31 * char ch = s.charAt(x);
32 *
33 * if(ch>='0' && ch<='9') numberCount++
34 * if(ch>='a' && ch<='z') smallCount++
35 * if(ch>='A' && ch<='Z') bigCount++
36 * D:输出结果。
37 *
38 * 练习:把给定字符串的方式,改进为键盘录入字符串的方式。
39 */
40 public class StringTest2 {
41 public static void main(String[] args) {
42 //定义一个字符串
43 String s = "Hello123World";
44
45 //定义三个统计变量
46 int bigCount = 0;
47 int smallCount = 0;
48 int numberCount = 0;
49
50 //遍历字符串,得到每一个字符。
51 for(int x=0; x<s.length(); x++){
52 char ch = s.charAt(x);
53
54 //判断该字符到底是属于那种类型的
55 if(ch>='a' && ch<='z'){
56 smallCount++;
57 }else if(ch>='A' && ch<='Z'){
58 bigCount++;
59 }else if(ch>='0' && ch<='9'){
60 numberCount++;
61 }
62 }
63
64 //输出结果。
65 System.out.println("大写字母"+bigCount+"个");
66 System.out.println("小写字母"+smallCount+"个");
67 System.out.println("数字"+numberCount+"个");
68 }
69
运行结果: