Как проверить, начинается ли строка с определенного префикса в Java

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять, начинается ли строка с определенного префикса на Java с использованием метода startsWith(). Это практическое упражнение поможет вам применить метод startsWith(), проверить его поведение в различных случаях и понять, как он обрабатывает нулевые и пустые префиксы. По завершении этого практического занятия вы будете свободно использовать этот фундаментальный метод манипулирования строками.


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() для проверки префикса

На этом этапе вы научитесь использовать метод startsWith() в Java для проверки, начинается ли строка с определенного префикса. Это распространенная операция, когда вам нужно обрабатывать текст в зависимости от его начала.

Метод startsWith() является частью класса String в Java. Он принимает аргумент типа 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);
        }
    }

    В этом коде:

    • Мы объявляем переменную text типа String и инициализируем ее значением "Hello, Java!".
    • Мы объявляем еще одну переменную prefix типа String и инициализируем ее значением "Hello".
    • Мы вызываем метод startsWith() для строки text, передавая в качестве аргумента переменную prefix. Результат (true или false) сохраняется в переменной startsWithPrefix типа boolean.
    • Наконец, мы выводим результат в консоль.
  5. Сохраните файл (Ctrl+S или Cmd+S).

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

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

    javac PrefixChecker.java

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

  8. Запустите скомпилированную программу с помощью команды java:

    java PrefixChecker

    Вы должны увидеть следующий вывод:

    Does the text start with 'Hello'? true

Этот вывод подтверждает, что строка "Hello, Java!" действительно начинается с префикса "Hello".

Тестирование префиксов с разными регистрами символов

На предыдущем этапе вы успешно использовали метод startsWith() для проверки префикса. Теперь давайте рассмотрим, как метод startsWith() обрабатывает разные регистры символов (заглавные и строчные буквы).

По умолчанию метод startsWith() чувствителен к регистру символов. Это означает, что "Hello" считается отличным от "hello" или "HELLO". Изменим файл PrefixChecker.java, чтобы увидеть это в действии.

  1. Откройте файл PrefixChecker.java в редакторе WebIDE.

  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() вернул true только для префикса "Hello" (совпадающего по регистру с исходной строкой) и false для "hello" и "HELLO". Это демонстрирует, что метод startsWith() чувствителен к регистру символов.

Если вам нужно выполнить проверку префикса без учета регистра символов, обычно вы преобразуете как исходную строку, так и префикс в один и тот же регистр (либо в нижний, либо в верхний) перед использованием метода startsWith(). Например, вы можете использовать text.toLowerCase().startsWith(prefix.toLowerCase()). Мы не будем реализовывать это здесь, но это полезный прием, который стоит запомнить.

Проверка на null и пустые префиксы

На этом этапе мы исследуем, как метод startsWith() ведет себя, когда префикс равен null или является пустой строкой (""). Понимание этих крайних случаев важно для написания надежного кода.

  1. Откройте файл PrefixChecker.java в редакторе WebIDE.

  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 и присваиваем ей пустую строку "".
    • Мы используем блок try-catch при проверке с prefixNull. Это связано с тем, что попытка вызвать метод для объекта, равного null, в Java приводит к 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-программах.

Резюме

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