一、字符串的截取
字符串的截取意思是在一个完整的字符串中,拿出一段来,产生一个新的字符串,常用的字符串的截取方法有两种:
- public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串。
- public String substring(int begin, int end):截取从begin开始,一直到end结束,中间的字符串。
备注:[begin,end),包含左边,不包含右边。
下面用代码举例说明:
public class Demo03Substring {
public static void main(String[] args) {
String str1 = "HelloWord";
String str2 = str1.substring(5);
System.out.println(str1); //HelloWorld 原封不动
System.out.println(str2); // Word 新字符串
System.out.println("----------------------");
String str3 = str1.substring(4,7);
System.out.println(str3); //oWo
System.out.println("----------------------");
//下面这种写法,字符串的内容仍然是没有改变的
//下面有两个字符串:"Hello","Java" strA中保存的是地址值
//地址值由一开始的Hello的地址值变成了Java的地址值
String strA = "Hello";
System.out.println(strA);
strA = "Java";
System.out.println(strA);
}
}
二、字符串的转换
字符串的转换意思是将一个完整的字符串转换为另一种形式,例如字符数组、字节数组,也可以将字符串之中的内容进行替换,常用的方法如下:
- public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值。
- public byte[] getBytes():获得当前字符串底层的字节数组。
- public String replace(CharSequence oldString,CharSequence newString):将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。
备注:CharSequence意思就是说可以接收字符串类型
下面用代码举例说明:
public class Demo04StringConvert {
public static void main(String[] args) {
// 转换成为字符数组
char[] chars = "Hello".toCharArray();
System.out.println(chars[0]); // H
System.out.println(chars.length); // 5
System.out.println("-----------------");
//转换成为字节数组
byte[] bytes = "abc".getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
System.out.println("-----------------");
//字符串的内容替换
String str1 = "How do you do?";
String str2 = str1.replace("o", "*");
System.out.println(str1); // How do you do?
System.out.println(str2); // H*w d* y*u d*?
//你品,你细品
String lang1 = "会不会玩,你大爷的!";
String lang2 = lang1.replace("你大爷的", "****");
System.out.println(lang1); // 会不会玩,你大爷的!
System.out.println(lang2); // 会不会玩,****!
}
}
三、字符串的分割
分割字符串是指将一个完整的字符串,按照参数的规则,将字符串分成几部分:
- public String[] split(String regex):按照参数的规则,将字符串切分成为若干部分。
代码举例:
public class Demo05StringSplit {
public static void main(String[] args) {
String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split(",");
for (int i = 0; i < array1.length; i++) {
System.out.println(array1[i]);
}
System.out.println("-------------------");
String str2 = "aaa bbb ccc";
String[] array2 = str2.split(" ");
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
System.out.println("------------------ ");
String str3 = "XXX.YYY.ZZZ";
String[] array3 = str3.split("\\.");
System.out.println(array3.length); // 0
for (int i = 0; i < array3.length; i++) {
System.out.println(array3[i]);
}
}
}
四、两个练习
Demo1:定义一个方法,把数组{1,2,3}按照指定个格式拼接成一个字符串。格式参照如下:[word1#word2#word3]。
思路:
- 首先准备一个int[]数组,内容是:1、2、3
- 定义一个方法,用来将数组变成字符串
三要素
返回值类型:String
方法名称:fromArrayToString
参数列表:int[]- 格式:[word1#word2#word3]
用到:for循环、字符串拼接、每个数组元素之前都有一个word字样、分隔使用的是#、区分下一个是输出最后一个- 调用方法,得到返回值,并打印结果字符串
下面给出代码示例:
public class Demo06StringPractice {
public static void main(String[] args) {
int[] array = {1, 2, 3};
String result = fromArrayToString(array);
System.out.println(result);
}
public static String fromArrayToString(int[] array) {
String str = "[";
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
str += "word" + array[i] + "]";
} else {
str += "word" + array[i] + "#";
}
}
return str;
}
}
Demo2:键盘输入一个字符串,并且统计其中各种字符出现的次数。种类有:大写字母、小写字母、数字、其他。
思路:
- 既然用到键盘输入,就想到scanner
- 键盘输入字符串,String str = sc.next();
- 定义四个变量,分别代表四种字符各自出现的次数。
- 需要对字符串一个字、一个字地检查,String–>char[],方法就是toCharArray()
- 遍历char[]字符数组,对当前字符的种类进行判断,并且用四个变量进行++动作。
- 打印输出四个变量,分别代表四种字符出现次数。
下面给出代码示例:
import java.util.Scanner;
public class Demo07StringCount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String input = sc.next(); // 获取键盘输入的字符串
int countUpper = 0; //大写字母
int countLower = 0; //小写字母
int countNumber = 0; //数字
int countOther = 0; //其他字符
char[] charArray = input.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char ch = charArray[i]; //当前单个字符
if ('A' <= ch && ch <= 'Z') {
countUpper++;
} else if ('a' <= ch && ch <= 'z') {
countLower++;
} else if ('0' <= ch && ch <= '9') {
countNumber++;
} else {
countOther++;
}
}
System.out.println("大写字母有:" + countUpper);
System.out.println("小写字母有:" + countLower);
System.out.println("数字有:" + countNumber);
System.out.println("其他类型有:" + countOther);
}
}