前言:
String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、 提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写.......
小编这次就比较全面系统的带大家总结清楚几乎所有string常用的API,并且带大家拆解清楚,能够灵活使用!!!
小编去医院拔了俩颗智齿,还有一颗牙坏的老厉害了,必须做根管治疗才行(呜呜呜)
但不影响继续日更一篇,我们继续一起进步吧!!!
我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,
把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,
为什么用这串代码关键字,对比同类型的代码,
让大家真正看完以后融会贯通,举一反三,实践应用!!!!
①官方定义 和 大白话拆解对比
②举生活中常见贴合例子、图解辅助理解的形式
③对代码实例中关键部分进行详细拆解、总结
给小编一个赞或者关注吧,我们一起进步!!
5:开头与结尾:
官方语言
- boolean startsWith(String prefix):这个方法用于判断当前字符串是否以给定的前缀(prefix)开始。如果字符串从第一位字符起就与指定的前缀相同,则返回true;否则,返回false。
- boolean startsWith(String prefix, int toffset):此方法用于检查从当前字符串中指定的位置(toffset)开始的子字符串是否以给定的前缀(prefix)开始。如果从指定位置开始的子字符串与给定前缀匹配,则返回true;否则,返回false。
- boolean endsWith(String suffix):这个方法用于判断当前字符串是否以指定的后缀(suffix)结束。如果字符串在末尾处与指定的后缀相匹配,则返回true;否则,返回false。
大白话拆解:
有一串珠子,每颗珠子代表一个字母。现在我们来玩一个小游戏:
- startsWith:就像是问你这串珠子是不是从某个特定的颜色开始的。比如,如果你有红、蓝、绿三颗珠子,而我问你它们是不是从红色开始的,你会说是的,因为最左边的那颗是红色的。
- startsWith(String prefix, int toffset):这就像我让你忽略最左边的一些珠子,然后告诉我剩下的部分是不是从某种颜色开始的。例如,假设你的珠子顺序是红、蓝、绿,我说“从第二颗珠子开始看,是不是蓝色?”你会回答是的。
- endsWith:这是在问你的珠子串是不是以某种颜色结束的。还是用之前的例子,如果有红、蓝、绿三颗珠子,我问你它们是不是以绿色结束的,你会说是的,因为最右边的那颗是绿色的。
有一个字符串 "HelloWorld":
- 使用 startsWith("Hello"),会返回 true,因为它确实是以 "Hello" 开头的。
- 使用 startsWith("World", 5),也会返回 true,因为我们从索引 5(即第6个字符"W")开始检查,之后的部分正是 "World"。
- 使用 endsWith("World"),同样返回 true,因为字符串是以 "World" 结束的。
举个栗子:
public class StringMethodExample {
public static void main(String[] args) {
// 定义一个字符串变量表示文件名
String fileName = "report_20250110_world.txt";
// 检查文件名是否以"report_"开头
boolean startsWithReport = fileName.startsWith("report_");
System.out.println("Does the filename start with 'report_'? " + startsWithReport);
// 检查从索引7开始的子字符串是否以"2025"作为前缀(即年份)
boolean startsWithYear = fileName.startsWith("2025", 7);
System.out.println("Does the filename contain '2025' as a year after the prefix? " + startsWithYear);
// 检查文件名是否以".txt"结尾
boolean endsWithTxt = fileName.endsWith(".txt");
System.out.println("Is the filename ending with '.txt'? " + endsWithTxt);
}
}
代码解释和总结:
- 定义字符串变量:首先,我们定义了一个名为fileName的字符串变量,值为 "report_20250110_world.txt"。这个字符串代表了一个可能的文件名。
- startsWith("report_"):这里我们用startsWith方法来判断fileName是否以 "report_" 开头。这是用来验证文件名是否遵循某种格式或命名约定,比如所有报告都以 "report_" 开头。
- startsWith("2025", 7):在这个例子中,我们不仅想检查前缀,还想确认特定位置之后的内容。通过startsWith(String prefix, int toffset)方法,我们可以指定起始位置(这里是索引7)后检查是否有特定的字符串(在这里是 "2025")。这可以用于提取和验证日期等信息。
- endsWith(".txt"):最后,我们使用endsWith方法来检查文件名是否以 .txt 结尾,这有助于确认文件类型是否是我们预期的那种(例如文本文件)。
6:替换
官方语言
- String replace(char oldChar, char newChar):返回一个新的字符串,它是通过将此字符串中出现的所有 oldChar 替换为 newChar 得到的。不支持正则表达式。
- String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列 replacement 替换此字符串中所有匹配字面值目标序列 target 的子字符串。
- String replaceAll(String regex, String replacement):使用给定的 replacement 替换此字符串中所有匹配给定的正则表达式的子字符串。
- String replaceFirst(String regex, String replacement):使用给定的 replacement 替换此字符串中第一个匹配给定的正则表达式的子字符串。
大白话拆解:
有一串珠子,每颗珠子代表一个字母或字符。现在我们来玩一个小游戏:
- replace(char oldChar, char newChar):就像把所有颜色为红色(oldChar)的珠子换成蓝色(newChar)。例如,如果你有红、绿、红三颗珠子,而我让你把所有的红色珠子都换成蓝色,最终你会得到蓝、绿、蓝三颗珠子。
- replace(CharSequence target, CharSequence replacement):这有点像找到特定的珠子组合并用另一组珠子替换它们。比如,如果你有红、绿、蓝三颗珠子组成的“信号”,我让你找到所有的“绿、蓝”组合,并用一颗黄色珠子代替,那么你最后可能会得到红、黄的组合。
- replaceAll(String regex, String replacement):这个就像是寻找遵循某种模式的珠子组合,并全部替换。例如,如果我们要找所有以红色开头的珠子组合并用紫色珠子替换,那么无论有多少这样的组合都会被替换。
- replaceFirst(String regex, String replacement):与上面类似,但只替换第一次找到的符合模式的珠子组合。也就是说,一旦找到了符合条件的第一个组合,就停止搜索和替换。
举个栗子:
public class ReplaceExample {
public static void main(String[] args) {
String text = "Hello World! Hello Universe!";
// 使用replace方法替换'l'为'X'
System.out.println(text.replace('l', 'X'));
// 使用replace方法替换"Hello"为"Hi"
System.out.println(text.replace("Hello", "Hi"));
// 使用replaceAll方法替换所有以"H"开头的单词为"Hey"
System.out.println(text.replaceAll("\\bH\\w*", "Hey"));
// 使用replaceFirst方法仅替换第一个匹配的以"H"开头的单词为"Hey"
System.out.println(text.replaceFirst("\\bH\\w*", "Hey"));
}
}
- 第一个replace('l', 'X')会将所有的小写字母'l'替换成'X',结果是"HeXXo WorXd! HeXXo Universe!"
- 第二个replace("Hello", "Hi")会将所有的"Hello"替换成"Hi",结果是"Hi World! Hi Universe!"
- replaceAll("\\bH\\w*", "Hey")使用正则表达式替换所有以'H'开头的单词为"Hey",结果是"Hey World! Hey Universe!"
- 最后replaceFirst("\\bH\\w*", "Hey")只替换第一个匹配的以'H'开头的单词,结果是"Hey World! Hello Universe!"
再举个栗子:
带大家深刻理解这些方法的工作原理。
public class ReplaceMethodsExample {
public static void main(String[] args) {
// 定义一个字符串变量
String sentence = "Hello World! Hello Universe!";
// 使用replace替换所有'l'为'X'
String replacedL = sentence.replace('l', 'X');
System.out.println("Replace all 'l' with 'X': " + replacedL);
// 使用replace替换所有的"Hello"为"Hi"
String replacedHello = sentence.replace("Hello", "Hi");
System.out.println("Replace all 'Hello' with 'Hi': " + replacedHello);
// 使用replaceAll替换所有以'H'开头的单词为'Hey'
String replacedAllH = sentence.replaceAll("\\bH\\w*", "Hey");
System.out.println("Replace all words starting with 'H' with 'Hey': " + replacedAllH);
// 使用replaceFirst仅替换第一个匹配的以'H'开头的单词为'Hey'
String replacedFirstH = sentence.replaceFirst("\\bH\\w*", "Hey");
System.out.println("Replace the first word starting with 'H' with 'Hey': " + replacedFirstH);
}
}
有一个句子 "Hello World! Hello Universe!",我们想要对这句话做一些修改:
- replace('l', 'X'):想象一下,你要把所有的小写字母“l”都换成字母“X”。就像在你的句子中找到所有的“l”,然后用“X”替代它们。所以原来的句子会变成"HeXXo WorXd! HeXXo Universe!"。
- replace("Hello", "Hi"):现在我们要把所有的“Hello”替换成“Hi”。这就像搜索整个句子中的“Hello”这个词,并将其替换为“Hi”。结果是"Hi World! Hi Universe!"。
- replaceAll("\\bH\\w*", "Hey"):这里我们要找的是所有以大写字母“H”开头的单词,并将它们替换为“Hey”。这个有点复杂,因为它是基于正则表达式的。正则表达式\\bH\\w*意味着任何以“H”开头并跟随任意数量字母或数字的单词(即以“H”开头的所有单词)。这样,原来的句子变成了"Hey World! Hey Universe!"。
- replaceFirst("\\bH\\w*", "Hey"):这次只替换第一个匹配到的以“H”开头的单词。与上面的例子类似,但只替换第一次出现的情况。因此,只有第一个“Hello”被替换成了“Hey”,结果是"Hey World! Hello Universe!"。
我们可以根据不同的需求使用不同的替换方法来修改字符串内容。无论是简单的字符替换还是复杂的模式匹配替换,Java都提供了简单易用的方法来实现。
我们今天就先到这里,下次见吧!!!