Как проверить, является ли символ пробельным в Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, является ли символ пробельным в Java, используя метод Character.isWhitespace(). Вы изучите, как этот метод определяет различные пробельные символы, включая пробелы, табуляции, переводы строк и возвраты каретки.

С помощью практических упражнений вы протестируете метод с разными символами, включая пробелы, табуляции и непробельные символы, такие как буквы и цифры, чтобы понять его поведение и практическое применение в программировании на 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()

На этом этапе мы рассмотрим, как использовать метод Character.isWhitespace() в Java. Этот метод является частью класса 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 = ' ';: Здесь объявляется переменная с именем 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() вместе с описательным сообщением.
  7. Сохраните файл WhitespaceChecker.java (Ctrl+S или Cmd+S).

Теперь, когда мы написали код, нам нужно скомпилировать и запустить его, чтобы увидеть вывод.

  1. Откройте терминал внизу WebIDE. Убедитесь, что вы находитесь в директории ~/project.

  2. Скомпилируйте Java-программу с помощью команды javac:

    javac WhitespaceChecker.java

    Если нет ошибок, эта команда создаст файл WhitespaceChecker.class в директории ~/project.

  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. Откройте файл WhitespaceChecker.java в редакторе WebIDE.

  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));: Эта строка выводит, является ли текущий символ c пробельным, используя метод Character.isWhitespace(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. Откройте файл WhitespaceChecker.java в редакторе WebIDE.

  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().

Резюме

В этом практическом занятии (лабораторной работе) мы научились проверять, является ли символ пробельным в Java с помощью метода Character.isWhitespace(). Мы изучили, как этот метод определяет общие пробельные символы, такие как пробелы, табуляции и переводы строки.

Мы практиковались в использовании метода Character.isWhitespace() путем создания простой Java-программы, которая тестировала различные символы, включая пробелы, табуляции и непробельные символы, такие как буквы и цифры, чтобы узнать, классифицируются ли они как пробельные. Это практическое упражнение показало практическое применение метода для определения и обработки пробельных символов в Java-коде.