如何在 Java 中检查字符是否为空白字符

JavaJavaBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 Character.isWhitespace() 方法来检查一个字符在 Java 中是否为空白字符。你将探究该方法如何识别各种空白字符,包括空格、制表符、换行符和回车符。

通过实践练习,你将使用不同的字符(包括空格、制表符以及字母和数字等非空白字符)来测试该方法,以了解其在 Java 编程中的行为和实际应用。


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/data_types("Data Types") java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/SystemandDataProcessingGroup -.-> java/object_methods("Object Methods") subgraph Lab Skills java/data_types -.-> lab-559939{{"如何在 Java 中检查字符是否为空白字符"}} java/operators -.-> lab-559939{{"如何在 Java 中检查字符是否为空白字符"}} java/for_loop -.-> lab-559939{{"如何在 Java 中检查字符是否为空白字符"}} java/strings -.-> lab-559939{{"如何在 Java 中检查字符是否为空白字符"}} java/object_methods -.-> lab-559939{{"如何在 Java 中检查字符是否为空白字符"}} end

使用 Character.isWhitespace() 方法

在这一步中,我们将探讨如何在 Java 中使用 Character.isWhitespace() 方法。该方法是 Character 类的一部分,用于判断给定的字符是否为空白字符。空白字符包括空格、制表符、换行符和回车符。

了解如何识别空白字符在许多编程任务中都很有用,例如解析文本、验证输入或格式化输出。

让我们创建一个新的 Java 文件来试验这个方法。

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

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

  3. ~/project 目录的空白处右键单击,然后选择“新建文件”。

  4. 将新文件命名为 WhitespaceChecker.java

  5. 在编辑器中打开 WhitespaceChecker.java 文件。

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

    public class WhitespaceChecker {
        public static void main(String[] args) {
            char space = ' ';
            char tab = '\t';
            char newline = '\n';
            char letter = 'a';
            char digit = '1';
    
            System.out.println("Is '" + space + "' whitespace? " + Character.isWhitespace(space));
            System.out.println("Is '" + tab + "' whitespace? " + Character.isWhitespace(tab));
            System.out.println("Is '" + newline + "' whitespace? " + Character.isWhitespace(newline));
            System.out.println("Is '" + letter + "' whitespace? " + Character.isWhitespace(letter));
            System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit));
        }
    }

    让我们来看看这段代码的新部分:

    • char space = ' ';:这行代码声明了一个名为 spacechar 类型变量,并将空格字符赋值给它。
    • char tab = '\t';:这行代码声明了一个名为 tab 的变量,并将制表符赋值给它。\t 是一个表示制表符的转义序列。
    • char newline = '\n';:这行代码声明了一个名为 newline 的变量,并将换行符赋值给它。\n 是一个表示换行符的转义序列。
    • char letter = 'a';:这行代码声明了一个名为 letter 的变量,并将字符 'a' 赋值给它。
    • char digit = '1';:这行代码声明了一个名为 digit 的变量,并将字符 '1' 赋值给它。
    • Character.isWhitespace(space):这是我们调用 isWhitespace() 方法的地方。我们将 space 字符作为参数传递给它,如果该字符是空白字符,它将返回 true,否则返回 false。我们对其他字符也进行同样的操作。
    • System.out.println(...):我们使用 println 方法将 isWhitespace() 方法调用的结果与描述性消息一起打印出来。
  7. 保存 WhitespaceChecker.java 文件(Ctrl+S 或 Cmd+S)。

现在我们已经编写了代码,需要编译并运行它以查看输出。

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

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

    javac WhitespaceChecker.java

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

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

    java WhitespaceChecker

    你应该会看到类似于以下的输出:

    Is ' ' whitespace? true
    Is '	' whitespace? true
    Is '
    ' whitespace? true
    Is 'a' whitespace? false
    Is '1' whitespace? false

    这个输出表明 isWhitespace() 方法正确地将空格、制表符和换行符识别为空白字符,将字母和数字字符识别为非空白字符。

你已经成功使用 Character.isWhitespace() 方法检查了不同的字符。在下一步中,我们将使用更多示例(包括不同类型的空白字符)来测试这个方法。

使用空格和制表符进行测试

在上一步中,我们使用单个空格和单个制表符测试了 Character.isWhitespace() 方法。在这一步,我们将进一步使用包含多个空格和制表符的字符串来测试该方法,以了解其行为。

请记住,Character.isWhitespace() 方法是针对单个字符的,而不是整个字符串。若要检查一个字符串是否仅包含空白字符,或者处理字符串中的空白字符,你通常需要逐个遍历字符串中的字符,并对每个字符应用 isWhitespace() 方法。

让我们修改 WhitespaceChecker.java 文件,以包含对多个空格和制表符的测试。

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

  2. 将现有代码替换为以下更新后的代码:

    public class WhitespaceChecker {
        public static void main(String[] args) {
            char space = ' ';
            char tab = '\t';
            char newline = '\n';
            char letter = 'a';
            char digit = '1';
    
            System.out.println("Is '" + space + "' whitespace? " + Character.isWhitespace(space));
            System.out.println("Is '" + tab + "' whitespace? " + Character.isWhitespace(tab));
            System.out.println("Is '" + newline + "' whitespace? " + Character.isWhitespace(newline));
            System.out.println("Is '" + letter + "' whitespace? " + Character.isWhitespace(letter));
            System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit));
    
            System.out.println("\nTesting with multiple characters:");
    
            String testString1 = "   "; // Three spaces
            String testString2 = "\t\t"; // Two tabs
            String testString3 = "  \t  "; // Spaces and tabs
            String testString4 = "Hello World"; // Contains space, but also letters
    
            System.out.println("Checking characters in: \"" + testString1 + "\"");
            for (int i = 0; i < testString1.length(); i++) {
                char c = testString1.charAt(i);
                System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
    
            System.out.println("Checking characters in: \"" + testString2 + "\"");
            for (int i = 0; i < testString2.length(); i++) {
                char c = testString2.charAt(i);
                 System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
    
            System.out.println("Checking characters in: \"" + testString3 + "\"");
            for (int i = 0; i < testString3.length(); i++) {
                char c = testString3.charAt(i);
                 System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
    
             System.out.println("Checking characters in: \"" + testString4 + "\"");
            for (int i = 0; i < testString4.length(); i++) {
                char c = testString4.charAt(i);
                 System.out.println("  Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));
            }
        }
    }

    以下是新代码的详细解释:

    • String testString1 = " ";:我们创建了一个包含三个空格字符的字符串。
    • String testString2 = "\t\t";:我们创建了一个包含两个制表符的字符串。
    • String testString3 = " \t ";:我们创建了一个包含空格和制表符混合的字符串。
    • String testString4 = "Hello World";:我们创建了一个包含字母和一个空格的字符串。
    • for (int i = 0; i < testString1.length(); i++):这是一个 for 循环,用于遍历字符串中的每个字符。
    • char c = testString1.charAt(i);:在循环内部,charAt(i) 方法获取当前索引 i 处的字符,并将其存储在变量 c 中。
    • System.out.println(" Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));:这行代码使用 Character.isWhitespace(c) 方法打印当前字符 c 是否为空白字符。(c == ' ' ? " " : (c == '\t' ? "\\t" : c)) 部分是一个三元运算符,用于在输出中为空格和制表符提供可见的表示形式。
  3. 保存 WhitespaceChecker.java 文件。

现在,让我们编译并运行更新后的程序。

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

  2. 编译 Java 程序:

    javac WhitespaceChecker.java
  3. 运行编译后的 Java 程序:

    java WhitespaceChecker

    你应该会看到类似以下的输出,其中包括测试字符串中每个字符的检查结果:

    Is ' ' whitespace? true
    Is '	' whitespace? true
    Is '
    ' whitespace? true
    Is 'a' whitespace? false
    Is '1' whitespace? false
    
    Testing with multiple characters:
    Checking characters in: "   "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "		"
      Is '\t' whitespace? true
      Is '\t' whitespace? true
    Checking characters in: "  	  "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is '\t' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "Hello World"
      Is 'H' whitespace? false
      Is 'e' whitespace? false
      Is 'l' whitespace? false
      Is 'l' whitespace? false
      Is 'o' whitespace? false
      Is ' ' whitespace? true
      Is 'W' whitespace? false
      Is 'o' whitespace? false
      Is 'r' whitespace? false
      Is 'l' whitespace? false
      Is 'd' whitespace? false

    此输出证实了 Character.isWhitespace() 方法能够正确识别字符串中的单个空格和制表符,即使它们连续出现或与其他字符混合。

你已经通过遍历字符,成功使用包含多个空格和制表符的字符串测试了 Character.isWhitespace() 方法。在下一步中,我们将查看该方法如何处理非空白字符。

处理非空白字符

在前面的步骤中,我们专注于使用 Character.isWhitespace() 方法识别空白字符。现在,让我们明确展示该方法如何处理那些被视为空白的字符。这将加深你对该方法能识别和不能识别内容的理解。

虽然我们在之前的示例中已经包含了一些非空白字符(如 'a' 和 '1'),但让我们在 WhitespaceChecker.java 文件中再添加一些不同类型的示例。

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

  2. main 方法中,在现有的 System.out.println 语句之后,但在遍历字符串的循环之前添加以下代码行。你可以在 System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit)); 这一行之后添加它们。

            char punctuation = '.';
            char symbol = '$';
            char controlChar = '\u0000'; // Null character
    
            System.out.println("Is '" + punctuation + "' whitespace? " + Character.isWhitespace(punctuation));
            System.out.println("Is '" + symbol + "' whitespace? " + Character.isWhitespace(symbol));
            System.out.println("Is U+0000 whitespace? " + Character.isWhitespace(controlChar)); // Printing control chars might not display correctly

    让我们看看我们添加的新字符:

    • char punctuation = '.';:一个标点符号。
    • char symbol = '$';:一个符号字符。
    • char controlChar = '\u0000';:这是一个表示空字符的 Unicode 转义序列,空字符是一种控制字符。Character.isWhitespace() 方法还会检查某些被 Unicode 标准视为空白的控制字符。
  3. 保存 WhitespaceChecker.java 文件。

现在,让我们编译并运行更新后的程序,看看这些新字符的输出结果。

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

  2. 编译 Java 程序:

    javac WhitespaceChecker.java
  3. 运行编译后的 Java 程序:

    java WhitespaceChecker

    你应该会看到类似以下的输出,其中包括新字符的检查结果:

    Is ' ' whitespace? true
    Is '	' whitespace? true
    Is '
    ' whitespace? true
    Is 'a' whitespace? false
    Is '1' whitespace? false
    Is '.' whitespace? false
    Is '$' whitespace? false
    Is U+0000 whitespace? false
    
    Testing with multiple characters:
    Checking characters in: "   "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "		"
      Is '\t' whitespace? true
      Is '\t' whitespace? true
    Checking characters in: "  	  "
      Is ' ' whitespace? true
      Is ' ' whitespace? true
      Is '\t' whitespace? true
      Is ' ' whitespace? true
      Is ' ' whitespace? true
    Checking characters in: "Hello World"
      Is 'H' whitespace? false
      Is 'e' whitespace? false
      Is 'l' whitespace? false
      Is 'l' whitespace? false
      Is 'o' whitespace? false
      Is ' ' whitespace? true
      Is 'W' whitespace? false
      Is 'o' whitespace? false
      Is 'r' whitespace? false
      Is 'l' whitespace? false
      Is 'd' whitespace? false

    从输出中可以看出,标点符号 ('.') 和符号 ('$') 被正确识别为非空白字符。空字符 (\u0000) 也被 Character.isWhitespace() 方法识别为非空白字符。该方法专门检查 Unicode 标准中定义为空白的字符,其中包括空格、制表符、换行符、回车符、换页符 (\f) 以及某些其他控制字符和空格分隔符。

你现在已经了解了 Character.isWhitespace() 方法在处理各种类型字符时的表现,包括标准空白字符以及像标点符号、符号和控制字符这样的非空白字符。至此,我们对 Character.isWhitespace() 方法的探索就完成了。

总结

在本次实验中,我们学习了如何使用 Character.isWhitespace() 方法在 Java 中检查一个字符是否为空白字符。我们探究了该方法如何识别常见的空白字符,如空格、制表符和换行符。

我们通过创建一个简单的 Java 程序来练习使用 Character.isWhitespace() 方法,该程序测试了各种字符,包括空格、制表符以及像字母和数字这样的非空白字符,以查看它们是否被归类为空白字符。这个实践练习展示了该方法在 Java 代码中识别和处理空白字符的实际应用。