简介
在这个实验中,你将学习如何使用 Character.isWhitespace()
方法来检查一个字符在 Java 中是否为空白字符。你将探究该方法如何识别各种空白字符,包括空格、制表符、换行符和回车符。
通过实践练习,你将使用不同的字符(包括空格、制表符以及字母和数字等非空白字符)来测试该方法,以了解其在 Java 编程中的行为和实际应用。
在这个实验中,你将学习如何使用 Character.isWhitespace()
方法来检查一个字符在 Java 中是否为空白字符。你将探究该方法如何识别各种空白字符,包括空格、制表符、换行符和回车符。
通过实践练习,你将使用不同的字符(包括空格、制表符以及字母和数字等非空白字符)来测试该方法,以了解其在 Java 编程中的行为和实际应用。
Character.isWhitespace()
方法在这一步中,我们将探讨如何在 Java 中使用 Character.isWhitespace()
方法。该方法是 Character
类的一部分,用于判断给定的字符是否为空白字符。空白字符包括空格、制表符、换行符和回车符。
了解如何识别空白字符在许多编程任务中都很有用,例如解析文本、验证输入或格式化输出。
让我们创建一个新的 Java 文件来试验这个方法。
如果 WebIDE 尚未打开,请打开它。
在左侧的文件资源管理器中,确保你位于 ~/project
目录下。
在 ~/project
目录的空白处右键单击,然后选择“新建文件”。
将新文件命名为 WhitespaceChecker.java
。
在编辑器中打开 WhitespaceChecker.java
文件。
将以下 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 = ' ';
:这行代码声明了一个名为 space
的 char
类型变量,并将空格字符赋值给它。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()
方法调用的结果与描述性消息一起打印出来。保存 WhitespaceChecker.java
文件(Ctrl+S 或 Cmd+S)。
现在我们已经编写了代码,需要编译并运行它以查看输出。
打开 WebIDE 底部的终端。确保你位于 ~/project
目录下。
使用 javac
命令编译 Java 程序:
javac WhitespaceChecker.java
如果没有错误,此命令将在 ~/project
目录下创建一个 WhitespaceChecker.class
文件。
使用 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
文件,以包含对多个空格和制表符的测试。
在 WebIDE 编辑器中打开 WhitespaceChecker.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));
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))
部分是一个三元运算符,用于在输出中为空格和制表符提供可见的表示形式。保存 WhitespaceChecker.java
文件。
现在,让我们编译并运行更新后的程序。
打开 WebIDE 底部的终端。确保你位于 ~/project
目录下。
编译 Java 程序:
javac WhitespaceChecker.java
运行编译后的 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
文件中再添加一些不同类型的示例。
在 WebIDE 编辑器中打开 WhitespaceChecker.java
文件。
在 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 标准视为空白的控制字符。保存 WhitespaceChecker.java
文件。
现在,让我们编译并运行更新后的程序,看看这些新字符的输出结果。
打开 WebIDE 底部的终端。确保你位于 ~/project
目录下。
编译 Java 程序:
javac WhitespaceChecker.java
运行编译后的 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 代码中识别和处理空白字符的实际应用。