简介
在这个实验中,你将学习如何在 Java 中检查字符串是否以特定后缀结尾。这是一项基础技能,适用于验证文件类型或根据数据结尾解析数据等任务。你将探索 endsWith()
方法,了解其大小写敏感性,并学习如何将其与 startsWith()
方法结合使用,以进行更复杂的检查。通过实际操作示例,你将在 Java 程序中获得使用这些字符串操作技术的实践经验。
在这个实验中,你将学习如何在 Java 中检查字符串是否以特定后缀结尾。这是一项基础技能,适用于验证文件类型或根据数据结尾解析数据等任务。你将探索 endsWith()
方法,了解其大小写敏感性,并学习如何将其与 startsWith()
方法结合使用,以进行更复杂的检查。通过实际操作示例,你将在 Java 程序中获得使用这些字符串操作技术的实践经验。
endsWith()
验证后缀在这一步中,我们将探讨如何在 Java 中使用 endsWith()
方法来检查字符串是否以特定后缀结尾。当你需要验证文件扩展名、检查特定模式或根据数据结尾处理数据时,这是一项常见的任务。
endsWith()
方法是 Java 中 String
类的一部分。它接受一个参数,即你要检查的后缀,并返回一个布尔值:如果字符串以指定的后缀结尾,则返回 true
,否则返回 false
。
让我们创建一个简单的 Java 程序来演示 endsWith()
方法的工作原理。
在 WebIDE 编辑器中打开 HelloJava.java
文件。如果你还没有打开它,可以在左侧的文件资源管理器中,在 project
文件夹内找到它。
将 HelloJava.java
中的现有代码替换为以下内容:
public class HelloJava {
public static void main(String[] args) {
String fileName = "document.txt";
boolean endsWithTxt = fileName.endsWith(".txt");
System.out.println("Does '" + fileName + "' end with '.txt'? " + endsWithTxt);
String imageUrl = "photo.jpg";
boolean endsWithJpg = imageUrl.endsWith(".jpg");
System.out.println("Does '" + imageUrl + "' end with '.jpg'? " + endsWithJpg);
String documentName = "report.pdf";
boolean endsWithDoc = documentName.endsWith(".doc");
System.out.println("Does '" + documentName + "' end with '.doc'? " + endsWithDoc);
}
}
在这段代码中:
String
变量:fileName
、imageUrl
和 documentName
。endsWith()
方法,以检查它是否以特定后缀(.txt
、.jpg
、.doc
)结尾。true
或 false
)存储在布尔变量(endsWithTxt
、endsWithJpg
、endsWithDoc
)中。System.out.println()
将结果打印到控制台。保存 HelloJava.java
文件(Ctrl+S 或 Cmd+S)。
现在,让我们编译这个程序。打开 WebIDE 底部的终端,并确保你位于 ~/project
目录中。然后,运行以下命令:
javac HelloJava.java
如果没有错误,编译将无声完成,并且会在 ~/project
目录中创建一个 HelloJava.class
文件。
最后,使用 java
命令运行编译后的程序:
java HelloJava
你应该会看到类似于以下的输出:
Does 'document.txt' end with '.txt'? true
Does 'photo.jpg' end with '.jpg'? true
Does 'report.pdf' end with '.doc'? false
此输出显示了我们使用 endsWith()
方法检查的结果,证实了 document.txt
以 .txt
结尾,photo.jpg
以 .jpg
结尾,而 report.pdf
不以 .doc
结尾。
你已经成功使用 endsWith()
方法检查字符串后缀。这是你在 Java 编程中会经常使用的一项基本操作。
在上一步中,我们学习了如何使用 endsWith()
方法。需要注意的是,Java 中的 endsWith()
方法执行的是区分大小写的比较。这意味着 "file.txt"
以 ".txt"
结尾,但不以 ".TXT"
结尾。
让我们修改程序,来看看这种大小写敏感性的实际表现。
在 WebIDE 编辑器中打开 HelloJava.java
文件。
将现有代码替换为以下内容:
public class HelloJava {
public static void main(String[] args) {
String fileName = "document.txt";
// 区分大小写的检查
boolean endsWithLowercaseTxt = fileName.endsWith(".txt");
System.out.println("Does '" + fileName + "' end with '.txt' (lowercase)? " + endsWithLowercaseTxt);
// 对大写后缀进行区分大小写的检查
boolean endsWithUppercaseTxt = fileName.endsWith(".TXT");
System.out.println("Does '" + fileName + "' end with '.TXT' (uppercase)? " + endsWithUppercaseTxt);
String anotherFile = "IMAGE.JPG";
// 对小写后缀进行区分大小写的检查
boolean endsWithLowercaseJpg = anotherFile.endsWith(".jpg");
System.out.println("Does '" + anotherFile + "' end with '.jpg' (lowercase)? " + endsWithLowercaseJpg);
// 对大写后缀进行区分大小写的检查
boolean endsWithUppercaseJpg = anotherFile.endsWith(".JPG");
System.out.println("Does '" + anotherFile + "' end with '.JPG' (uppercase)? " + endsWithUppercaseJpg);
}
}
在这段更新后的代码中,我们分别使用小写和大写后缀来显式测试 endsWith()
方法,以突出该方法区分大小写的特性。
保存 HelloJava.java
文件。
在终端中编译修改后的程序:
javac HelloJava.java
运行编译后的程序:
java HelloJava
你应该会看到类似以下的输出:
Does 'document.txt' end with '.txt' (lowercase)? true
Does 'document.txt' end with '.TXT' (uppercase)? false
Does 'IMAGE.JPG' end with '.jpg' (lowercase)? false
Does 'IMAGE.JPG' end with '.JPG' (uppercase)? true
可以看到,当后缀的大小写与字符串中的大小写不完全匹配时,endsWith()
方法返回 false
。
如果你需要进行不区分大小写的检查,通常会在使用 endsWith()
方法之前,将字符串和后缀都转换为相同的大小写(小写或大写)。在这一步中我们不会涉及这方面内容,但这是一个值得记住的实用技巧。
在 Java 中处理字符串时,理解大小写敏感性至关重要,因为许多字符串方法默认是区分大小写的。
startsWith()
和 endsWith()
进行检查除了使用 endsWith()
方法检查字符串的结尾,你还可以使用 startsWith()
方法检查字符串的开头。该方法的工作方式与 endsWith()
类似,它接受一个前缀作为参数,如果字符串以该前缀开头,则返回 true
,否则返回 false
。和 endsWith()
一样,startsWith()
也是区分大小写的。
结合使用 startsWith()
和 endsWith()
可以让你对字符串进行更具体的检查。例如,你可能想检查一个文件名是否以 "temp_" 开头并以 ".log" 结尾。
让我们更新程序,同时使用 startsWith()
和 endsWith()
方法。
在 WebIDE 编辑器中打开 HelloJava.java
文件。
将现有代码替换为以下内容:
public class HelloJava {
public static void main(String[] args) {
String logFileName = "temp_application_error.log";
boolean startsWithTemp = logFileName.startsWith("temp_");
boolean endsWithLog = logFileName.endsWith(".log");
System.out.println("Does '" + logFileName + "' start with 'temp_'? " + startsWithTemp);
System.out.println("Does '" + logFileName + "' end with '.log'? " + endsWithLog);
// 使用逻辑与运算符 (&&) 组合检查
boolean isTempLogFile = startsWithTemp && endsWithLog;
System.out.println("Is '" + logFileName + "' a temporary log file? " + isTempLogFile);
String anotherFile = "data_report.txt";
boolean startsWithData = anotherFile.startsWith("data_");
boolean endsWithTxt = anotherFile.endsWith(".txt");
System.out.println("Does '" + anotherFile + "' start with 'data_'? " + startsWithData);
System.out.println("Does '" + anotherFile + "' end with '.txt'? " + endsWithTxt);
boolean isDataTxtFile = startsWithData && endsWithTxt;
System.out.println("Is '" + anotherFile + "' a data text file? " + isDataTxtFile);
}
}
在这段代码中:
startsWith()
方法来检查字符串的开头。&&
) 来组合 startsWith()
和 endsWith()
的检查结果。&&
运算符只有在两个条件都为 true
时才会返回 true
。保存 HelloJava.java
文件。
在终端中编译程序:
javac HelloJava.java
运行编译后的程序:
java HelloJava
你应该会看到类似以下的输出:
Does 'temp_application_error.log' start with 'temp_'? true
Does 'temp_application_error.log' end with '.log'? true
Is 'temp_application_error.log' a temporary log file? true
Does 'data_report.txt' start with 'data_'? true
Does 'data_report.txt' end with '.txt'? true
Is 'data_report.txt' a data text file? true
这个输出展示了你如何将 startsWith()
和 endsWith()
与逻辑运算符结合使用,以执行更复杂的字符串检查。
现在你已经学会了如何使用 startsWith()
和 endsWith()
方法,并将它们结合起来验证字符串的开头和结尾。这些方法是 Java 中进行字符串操作和验证的基础工具。
在本次实验中,我们学习了如何在 Java 中使用 endsWith()
方法检查字符串是否以特定后缀结尾。我们探索了它的基本用法,用于验证文件扩展名等后缀,并了解到它会返回一个布尔值,表明字符串是否以指定的后缀结尾。
我们还研究了 endsWith()
方法的大小写敏感性,并学会了在比较之前将字符串和后缀转换为相同的大小写,以进行不区分大小写的检查。最后,我们结合使用 startsWith()
和 endsWith()
方法,检查字符串是否同时以特定的前缀开头和以特定的后缀结尾,展示了如何将这些方法结合起来进行更复杂的字符串验证。