如何在 Java 中检查字符串是否为小写

JavaJavaBeginner
立即练习

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

简介

在这个实验中,你将学习如何在 Java 中检查一个字符串是否为小写。我们将探索不同的实现方法,首先是使用 toLowerCase()equalsIgnoreCase() 方法在忽略大小写的情况下比较字符串。

然后,你将学习如何遍历字符串,并使用 Character.isLowerCase() 方法逐个检查每个字符。最后,我们将介绍在执行此检查时如何处理非字母字符。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/for_loop -.-> lab-559986{{"如何在 Java 中检查字符串是否为小写"}} java/strings -.-> lab-559986{{"如何在 Java 中检查字符串是否为小写"}} java/string_methods -.-> lab-559986{{"如何在 Java 中检查字符串是否为小写"}} end

使用 toLowerCase() 比较字符串

在这一步中,你将学习如何在 Java 中比较字符串,同时忽略字母的大小写。当你想检查两个字符串是否相同,而不考虑它们使用的是大写字母还是小写字母时,这是一项常见的任务。

让我们创建一个新的 Java 文件来练习这个操作。

  1. 如果 WebIDE 尚未打开,请打开它。

  2. 在左侧的文件资源管理器中,确保你位于 ~/project 目录下。

  3. 在文件资源管理器的空白处右键单击,选择“新建文件”,并将其命名为 CaseInsensitiveCompare.java

  4. 在编辑器中打开 CaseInsensitiveCompare.java 文件。

  5. 将以下代码复制并粘贴到编辑器中:

    public class CaseInsensitiveCompare {
        public static void main(String[] args) {
            String str1 = "Hello";
            String str2 = "hello";
            String str3 = "World";
    
            // Comparing strings directly (case-sensitive)
            boolean areEqualCaseSensitive = str1.equals(str2);
            System.out.println("Case-sensitive comparison of \"" + str1 + "\" and \"" + str2 + "\": " + areEqualCaseSensitive);
    
            // Comparing strings ignoring case
            boolean areEqualCaseInsensitive = str1.equalsIgnoreCase(str2);
            System.out.println("Case-insensitive comparison of \"" + str1 + "\" and \"" + str2 + "\": " + areEqualCaseInsensitive);
    
            // Comparing str1 and str3 ignoring case
            boolean areEqualStr1Str3 = str1.equalsIgnoreCase(str3);
            System.out.println("Case-insensitive comparison of \"" + str1 + "\" and \"" + str3 + "\": " + areEqualStr1Str3);
        }
    }

    在这段代码中:

    • 我们声明了三个 String 变量:str1str2str3
    • str1.equals(str2) 执行区分大小写的比较。它将返回 false,因为 "Hello" 和 "hello" 由于大写的 'H' 而不同。
    • str1.equalsIgnoreCase(str2) 执行不区分大小写的比较。它将返回 true,因为当忽略大小写时,"Hello" 和 "hello" 是相同的。
    • 我们还对 str1str3 进行了不区分大小写的比较,以表明不同的单词仍然被视为不同。
  6. 保存文件(Ctrl+S 或 Cmd+S)。

  7. 打开 WebIDE 底部的终端。确保你位于 ~/project 目录下。

  8. 使用 javac 命令编译 Java 程序:

    javac CaseInsensitiveCompare.java

    如果没有错误,你将看不到任何输出。~/project 目录下将创建一个 CaseInsensitiveCompare.class 文件。

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

    java CaseInsensitiveCompare

    你应该会看到以下输出:

    Case-sensitive comparison of "Hello" and "hello": false
    Case-insensitive comparison of "Hello" and "hello": true
    Case-insensitive comparison of "Hello" and "World": false

    此输出证实了 equals() 方法区分大小写,而 equalsIgnoreCase() 方法忽略大小写。

使用 equalsIgnoreCase() 是一种方便的比较字符串的方法,无需担心字母是大写还是小写。

在循环中使用 Character.isLowerCase()

在上一步中,我们学习了如何在忽略大小写的情况下比较整个字符串。有时,你可能需要检查字符串中的单个字符,判断它们是小写还是大写。Java 的 Character 类为此提供了有用的方法。

在这一步中,我们将在循环中使用 Character.isLowerCase() 方法来统计字符串中小写字母的数量。

  1. 如果 WebIDE 尚未打开,请打开它。

  2. 在左侧的文件资源管理器中,确保你位于 ~/project 目录下。

  3. ~/project 目录下创建一个名为 CountLowercase.java 的新文件。

  4. 在编辑器中打开 CountLowercase.java 文件。

  5. 将以下代码复制并粘贴到编辑器中:

    public class CountLowercase {
        public static void main(String[] args) {
            String text = "Hello World 123!";
            int lowercaseCount = 0;
    
            // Loop through each character in the string
            for (int i = 0; i < text.length(); i++) {
                char character = text.charAt(i); // Get the character at the current index
    
                // Check if the character is a lowercase letter
                if (Character.isLowerCase(character)) {
                    lowercaseCount++; // Increment the counter if it's lowercase
                }
            }
    
            System.out.println("The string is: \"" + text + "\"");
            System.out.println("Number of lowercase letters: " + lowercaseCount);
        }
    }

    让我们来分析一下这段代码:

    • 我们有一个 String 类型的变量 text,其中包含大写字母、小写字母、数字和符号的组合。
    • 我们将整数变量 lowercaseCount 初始化为 0。这个变量将用于存储小写字母的数量。
    • 我们使用一个 for 循环来遍历字符串中的每个字符。循环从索引 0 开始,直到(但不包括)字符串的长度。
    • text.charAt(i) 用于获取当前索引 i 处的字符。
    • Character.isLowerCase(character) 是一个方法,如果给定的 character 是小写字母,则返回 true,否则返回 false
    • 如果 Character.isLowerCase() 返回 true,我们就将 lowercaseCount 加 1。
    • 最后,我们打印原始字符串和小写字母的总数。
  6. 保存文件(Ctrl+S 或 Cmd+S)。

  7. 打开 WebIDE 底部的终端。确保你位于 ~/project 目录下。

  8. 编译 Java 程序:

    javac CountLowercase.java

    如果编译成功,将创建一个 CountLowercase.class 文件。

  9. 运行编译后的 Java 程序:

    java CountLowercase

    你应该会看到以下输出:

    The string is: "Hello World 123!"
    Number of lowercase letters: 8

    输出显示,字符串 "Hello World 123!" 中有 8 个小写字母('e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd')。

在循环中使用 Character.isLowerCase() 可以让你对字符串进行逐个字符的分析,这在各种文本处理任务中非常有用。

忽略非字母字符

在上一步中,我们统计了小写字母的数量。然而,字符串可以包含各种字符,如数字、空格和符号。在比较字符串或分析其内容时,你通常希望忽略这些非字母字符。

在这一步中,我们将修改程序,使其仅处理字母字符,而忽略其他所有内容。为此,我们将使用 Character.isLetter() 方法。

  1. 如果 WebIDE 尚未打开,请打开它。

  2. 打开你在上一步中创建的 CountLowercase.java 文件。

  3. 修改代码,在检查字符是否为小写字母之前,先检查该字符是否为字母。将现有代码替换为以下内容:

    public class CountLowercase {
        public static void main(String[] args) {
            String text = "Hello World 123!";
            int lowercaseCount = 0;
            StringBuilder lettersOnly = new StringBuilder(); // To store only letter characters
    
            // Loop through each character in the string
            for (int i = 0; i < text.length(); i++) {
                char character = text.charAt(i); // Get the character at the current index
    
                // Check if the character is a letter
                if (Character.isLetter(character)) {
                    lettersOnly.append(character); // Add the letter to our new string
    
                    // Check if the letter is lowercase
                    if (Character.isLowerCase(character)) {
                        lowercaseCount++; // Increment the counter if it's lowercase
                    }
                }
            }
    
            System.out.println("The original string is: \"" + text + "\"");
            System.out.println("Letters only string: \"" + lettersOnly.toString() + "\"");
            System.out.println("Number of lowercase letters (ignoring non-letters): " + lowercaseCount);
        }
    }

    以下是我们添加和修改的内容:

    • 我们引入了一个名为 lettersOnlyStringBuilderStringBuilder 用于高效地构建字符串,特别是在循环中添加字符时。
    • 在循环内部,我们添加了一个 if (Character.isLetter(character)) 条件。这用于检查当前 character 是否为字母(大写或小写)。
    • 如果字符是字母,我们使用 lettersOnly.append(character) 将其追加到 lettersOnly StringBuilder 中。
    • 现在,Character.isLowerCase(character) 检查嵌套在 Character.isLetter() 检查内部,确保我们只统计实际为字母的字符中的小写字母。
    • 最后,我们打印原始字符串、仅包含字母的字符串,以及这些字母中小写字母的数量。
  4. 保存文件(Ctrl+S 或 Cmd+S)。

  5. 打开 WebIDE 底部的终端。确保你位于 ~/project 目录下。

  6. 编译修改后的 Java 程序:

    javac CountLowercase.java

    确保没有编译错误。

  7. 运行编译后的 Java 程序:

    java CountLowercase

    你应该会看到以下输出:

    The original string is: "Hello World 123!"
    Letters only string: "HelloWorld"
    Number of lowercase letters (ignoring non-letters): 8

    注意,“Letters only string”现在仅包含“HelloWorld”,并且小写字母的数量仍然是 8,因为我们只统计实际字母中的小写字母。

当你需要在进一步处理字符串之前过滤掉非字母字符时,使用 Character.isLetter() 非常有用。

总结

在本次实验中,我们学习了如何在 Java 中检查字符串是否为小写。我们探讨了两种主要方法。首先,我们使用 equalsIgnoreCase() 方法进行字符串比较,以实现不区分大小写的比较,展示了如何检查两个字符串是否相同,而不考虑字母的大小写。

其次,虽然没有提供完整的细节,但这些步骤表明,我们将学习如何使用循环遍历字符串,并利用 Character.isLowerCase() 方法检查单个字符是否为小写,同时还会考虑在这个过程中如何忽略非字母字符。