如何在 Java 中检查字符串是否以特定前缀开头

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Java 中使用 startsWith() 方法来检查一个字符串是否以特定的前缀开头。这个实践练习将指导你应用 startsWith() 方法,在不同的情况下测试其行为,并理解它如何处理 null 和空前缀。在这个实验结束时,你将熟练掌握这一基本的字符串操作技术。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/StringManipulationGroup -.-> java/strings("Strings") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/strings -.-> lab-559995{{"如何在 Java 中检查字符串是否以特定前缀开头"}} java/exceptions -.-> lab-559995{{"如何在 Java 中检查字符串是否以特定前缀开头"}} java/string_methods -.-> lab-559995{{"如何在 Java 中检查字符串是否以特定前缀开头"}} end

应用 startsWith() 方法检查前缀

在这一步中,你将学习如何在 Java 中使用 startsWith() 方法来检查一个字符串是否以特定的前缀开头。当你需要根据文本的开头来处理文本时,这是一个常见的操作。

startsWith() 方法是 Java 中 String 类的一部分。它接受一个 String 类型的参数,该参数就是你要检查的前缀。如果字符串以指定的前缀开头,该方法返回 true,否则返回 false

让我们创建一个新的 Java 文件来练习使用 startsWith() 方法。

  1. 打开 WebIDE 左侧的文件资源管理器。

  2. ~/project 目录下右键单击,然后选择“新建文件”。

  3. 将新文件命名为 PrefixChecker.java

  4. 在编辑器中打开 PrefixChecker.java,并粘贴以下代码:

    public class PrefixChecker {
        public static void main(String[] args) {
            String text = "Hello, Java!";
            String prefix = "Hello";
    
            boolean startsWithPrefix = text.startsWith(prefix);
    
            System.out.println("Does the text start with '" + prefix + "'? " + startsWithPrefix);
        }
    }

    在这段代码中:

    • 我们声明了一个 String 类型的变量 text,并将其初始化为 "Hello, Java!"。
    • 我们声明了另一个 String 类型的变量 prefix,并将其初始化为 "Hello"。
    • 我们在 text 字符串上调用 startsWith() 方法,并将 prefix 作为参数传递。结果(truefalse)存储在 boolean 类型的变量 startsWithPrefix 中。
    • 最后,我们将结果打印到控制台。
  5. 保存文件(Ctrl+S 或 Cmd+S)。

  6. 现在,让我们编译并运行这个程序。打开 WebIDE 底部的终端。确保你位于 ~/project 目录下。

  7. 使用 javac 命令编译 Java 文件:

    javac PrefixChecker.java

    如果没有错误,这个命令将在 ~/project 目录下创建一个 PrefixChecker.class 文件。

  8. 使用 java 命令运行编译后的程序:

    java PrefixChecker

    你应该会看到以下输出:

    Does the text start with 'Hello'? true

这个输出证实了字符串 "Hello, Java!" 确实以 "Hello" 为前缀。

测试不同大小写的前缀

在上一步中,你成功使用 startsWith() 方法检查了前缀。现在,让我们探究 startsWith() 方法如何处理不同大小写(大写字母和小写字母)的情况。

默认情况下,startsWith() 方法区分大小写。这意味着 "Hello" 被视为与 "hello" 或 "HELLO" 不同。让我们修改 PrefixChecker.java 文件来实际观察这种情况。

  1. 在 WebIDE 编辑器中打开 PrefixChecker.java 文件。

  2. 修改 main 方法以包含不同大小写的检查。将现有的 main 方法替换为以下代码:

    public class PrefixChecker {
        public static void main(String[] args) {
            String text = "Hello, Java!";
    
            String prefix1 = "Hello";
            String prefix2 = "hello";
            String prefix3 = "HELLO";
    
            boolean startsWithPrefix1 = text.startsWith(prefix1);
            boolean startsWithPrefix2 = text.startsWith(prefix2);
            boolean startsWithPrefix3 = text.startsWith(prefix3);
    
            System.out.println("Does the text start with '" + prefix1 + "'? " + startsWithPrefix1);
            System.out.println("Does the text start with '" + prefix2 + "'? " + startsWithPrefix2);
            System.out.println("Does the text start with '" + prefix3 + "'? " + startsWithPrefix3);
        }
    }

    在这段更新后的代码中,我们正在检查 text 字符串是否以 "Hello"、"hello" 和 "HELLO" 开头。

  3. 保存文件(Ctrl+S 或 Cmd+S)。

  4. 打开终端并确保你位于 ~/project 目录下。

  5. 编译修改后的 Java 文件:

    javac PrefixChecker.java
  6. 运行编译后的程序:

    java PrefixChecker

    你应该会看到以下输出:

    Does the text start with 'Hello'? true
    Does the text start with 'hello'? false
    Does the text start with 'HELLO'? false

这个输出清楚地表明,startsWith() 方法仅对前缀 "Hello"(与原始字符串的大小写匹配)返回 true,而对 "hello" 和 "HELLO" 返回 false。这证明了 startsWith() 方法区分大小写。

如果你需要进行不区分大小写的前缀检查,通常会在使用 startsWith() 方法之前,将原始字符串和前缀都转换为相同的大小写(小写或大写)。例如,你可以使用 text.toLowerCase().startsWith(prefix.toLowerCase())。我们在这里不会实现这一点,但这是一个值得记住的有用技巧。

检查空值(null)和空字符串前缀

在这一步中,我们将研究当 startsWith() 方法的前缀为 null 或空字符串("")时,该方法的行为。理解这些边界情况对于编写健壮的代码至关重要。

  1. 在 WebIDE 编辑器中打开 PrefixChecker.java 文件。

  2. 修改 main 方法,以测试 null 前缀和空字符串前缀的情况。将现有的 main 方法替换为以下代码:

    public class PrefixChecker {
        public static void main(String[] args) {
            String text = "Hello, Java!";
    
            String prefixNull = null;
            String prefixEmpty = "";
    
            // Check with a null prefix
            try {
                boolean startsWithPrefixNull = text.startsWith(prefixNull);
                System.out.println("Does the text start with null? " + startsWithPrefixNull);
            } catch (NullPointerException e) {
                System.out.println("Checking with null prefix resulted in: " + e);
            }
    
            // Check with an empty prefix
            boolean startsWithPrefixEmpty = text.startsWith(prefixEmpty);
            System.out.println("Does the text start with an empty string? " + startsWithPrefixEmpty);
        }
    }

    在这段更新后的代码中:

    • 我们声明了 prefixNull 并将其赋值为 null
    • 我们声明了 prefixEmpty 并将其赋值为空字符串 ""
    • 在使用 prefixNull 进行检查时,我们使用了 try-catch 块。这是因为在 Java 中,尝试对 null 对象调用方法会导致 NullPointerException。我们捕获这个异常以观察会发生什么。
    • 我们使用空字符串前缀 prefixEmpty 进行检查。
  3. 保存文件(Ctrl+S 或 Cmd+S)。

  4. 打开终端并确保你位于 ~/project 目录下。

  5. 编译修改后的 Java 文件:

    javac PrefixChecker.java
  6. 运行编译后的程序:

    java PrefixChecker

    你应该会看到以下输出:

    Checking with null prefix resulted in: java.lang.NullPointerException
    Does the text start with an empty string? true

这个输出展示了两个重要的点:

  • null 作为前缀传递给 startsWith() 方法会导致 NullPointerException。这就是为什么在对可能为 null 的值调用方法之前,处理这些值至关重要。
  • 将空字符串("")作为前缀传递给 startsWith() 方法会返回 true。这是因为任何字符串都可以被认为是以空字符串开头的。

理解 startsWith() 方法如何处理 null 和空字符串对于防止错误并在你的 Java 程序中编写正确的逻辑非常重要。

总结

在本次实验中,你学习了如何在 Java 中使用 startsWith() 方法来检查字符串是否以特定前缀开头。你通过创建一个简单的 Java 程序、编译并运行它以查看输出,练习了应用此方法。这项基础技能对于 Java 编程中的各种字符串操作任务至关重要。