Como Verificar se uma String Termina com um Sufixo Específico em Java

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se uma string termina com um sufixo específico em Java. Esta é uma habilidade fundamental para tarefas como validar tipos de arquivos ou analisar dados com base em sua terminação. Você explorará o método endsWith(), entenderá sua sensibilidade a maiúsculas e minúsculas e aprenderá como combiná-lo com startsWith() para verificações mais complexas. Através de exemplos práticos, você obterá experiência prática no uso dessas técnicas de manipulação de strings em seus programas Java.

Usar endsWith() para Verificar o Sufixo

Nesta etapa, exploraremos como usar o método endsWith() em Java para verificar se uma string termina com um sufixo específico. Esta é uma tarefa comum quando você precisa validar extensões de arquivos, verificar padrões específicos ou processar dados com base em sua terminação.

O método endsWith() faz parte da classe String em Java. Ele recebe um único argumento, que é o sufixo que você deseja verificar, e retorna um valor booleano: true se a string terminar com o sufixo especificado e false caso contrário.

Vamos criar um programa Java simples para demonstrar como endsWith() funciona.

  1. Abra o arquivo HelloJava.java no editor WebIDE. Se você não o tiver aberto, pode encontrá-lo no File Explorer (Explorador de Arquivos) à esquerda, dentro da pasta project.

  2. Substitua o código existente em HelloJava.java pelo seguinte:

    public class HelloJava {
        public static void main(String[] args) {
            String fileName = "document.txt";
            boolean endsWithTxt = fileName.endsWith(".txt");
    
            System.out.println("Does '" + fileName + "' end with '.txt'? " + endsWithTxt);
    
            String imageUrl = "photo.jpg";
            boolean endsWithJpg = imageUrl.endsWith(".jpg");
    
            System.out.println("Does '" + imageUrl + "' end with '.jpg'? " + endsWithJpg);
    
            String documentName = "report.pdf";
            boolean endsWithDoc = documentName.endsWith(".doc");
    
            System.out.println("Does '" + documentName + "' end with '.doc'? " + endsWithDoc);
        }
    }

    Neste código:

    • Declaramos três variáveis String: fileName, imageUrl e documentName.
    • Usamos o método endsWith() em cada string para verificar se ela termina com um sufixo específico (.txt, .jpg, .doc).
    • Os resultados (true ou false) são armazenados em variáveis booleanas (endsWithTxt, endsWithJpg, endsWithDoc).
    • Finalmente, imprimimos os resultados no console usando System.out.println().
  3. Salve o arquivo HelloJava.java (Ctrl+S ou Cmd+S).

  4. Agora, vamos compilar o programa. Abra o Terminal na parte inferior do WebIDE e certifique-se de estar no diretório ~/project. Em seguida, execute o seguinte comando:

    javac HelloJava.java

    Se não houver erros, a compilação será concluída silenciosamente e um arquivo HelloJava.class será criado no diretório ~/project.

  5. Finalmente, execute o programa compilado usando o comando java:

    java HelloJava

    Você deve ver uma saída semelhante a esta:

    Does 'document.txt' end with '.txt'? true
    Does 'photo.jpg' end with '.jpg'? true
    Does 'report.pdf' end with '.doc'? false

    Esta saída mostra os resultados de nossas verificações endsWith(), confirmando que document.txt termina com .txt, photo.jpg termina com .jpg e report.pdf não termina com .doc.

Você usou com sucesso o método endsWith() para verificar sufixos de strings. Esta é uma operação fundamental que você usará com frequência na programação Java.

Testar Sufixo com Sensibilidade a Maiúsculas e Minúsculas

Na etapa anterior, aprendemos como usar o método endsWith(). É importante entender que o método endsWith() em Java realiza uma comparação case-sensitive (sensível a maiúsculas e minúsculas). Isso significa que "file.txt" termina com ".txt", mas não termina com ".TXT".

Vamos modificar nosso programa para ver essa sensibilidade a maiúsculas e minúsculas em ação.

  1. Abra o arquivo HelloJava.java no editor WebIDE.

  2. Substitua o código existente pelo seguinte:

    public class HelloJava {
        public static void main(String[] args) {
            String fileName = "document.txt";
    
            // Case-sensitive check
            boolean endsWithLowercaseTxt = fileName.endsWith(".txt");
            System.out.println("Does '" + fileName + "' end with '.txt' (lowercase)? " + endsWithLowercaseTxt);
    
            // Case-sensitive check with uppercase suffix
            boolean endsWithUppercaseTxt = fileName.endsWith(".TXT");
            System.out.println("Does '" + fileName + "' end with '.TXT' (uppercase)? " + endsWithUppercaseTxt);
    
            String anotherFile = "IMAGE.JPG";
    
            // Case-sensitive check with lowercase suffix
            boolean endsWithLowercaseJpg = anotherFile.endsWith(".jpg");
            System.out.println("Does '" + anotherFile + "' end with '.jpg' (lowercase)? " + endsWithLowercaseJpg);
    
            // Case-sensitive check with uppercase suffix
            boolean endsWithUppercaseJpg = anotherFile.endsWith(".JPG");
            System.out.println("Does '" + anotherFile + "' end with '.JPG' (uppercase)? " + endsWithUppercaseJpg);
        }
    }

    Neste código atualizado, estamos testando explicitamente endsWith() com sufixos em letras minúsculas e maiúsculas para destacar a natureza case-sensitive do método.

  3. Salve o arquivo HelloJava.java.

  4. Compile o programa modificado no Terminal:

    javac HelloJava.java
  5. Execute o programa compilado:

    java HelloJava

    Você deve ver uma saída semelhante a esta:

    Does 'document.txt' end with '.txt' (lowercase)? true
    Does 'document.txt' end with '.TXT' (uppercase)? false
    Does 'IMAGE.JPG' end with '.jpg' (lowercase)? false
    Does 'IMAGE.JPG' end with '.JPG' (uppercase)? true

    Como você pode ver, o método endsWith() retornou false quando a capitalização do sufixo não correspondeu exatamente à capitalização na string.

Se você precisar realizar uma verificação case-insensitive (insensível a maiúsculas e minúsculas), normalmente converteria tanto a string quanto o sufixo para a mesma capitalização (seja minúscula ou maiúscula) antes de usar endsWith(). Não abordaremos isso nesta etapa específica, mas é uma técnica útil para ter em mente.

Entender a sensibilidade a maiúsculas e minúsculas é crucial ao trabalhar com strings em Java, pois muitos métodos de string são case-sensitive por padrão.

Combinar Verificações startsWith() e endsWith()

Além de verificar o final de uma string com endsWith(), você também pode verificar o início de uma string usando o método startsWith(). Este método funciona de forma semelhante a endsWith(), recebendo um prefixo como argumento e retornando true se a string começar com esse prefixo e false caso contrário. Assim como endsWith(), startsWith() também é case-sensitive (sensível a maiúsculas e minúsculas).

Combinar startsWith() e endsWith() permite que você execute verificações mais específicas em strings. Por exemplo, você pode querer verificar se um nome de arquivo começa com "temp_" e termina com ".log".

Vamos atualizar nosso programa para usar tanto startsWith() quanto endsWith().

  1. Abra o arquivo HelloJava.java no editor WebIDE.

  2. Substitua o código existente pelo seguinte:

    public class HelloJava {
        public static void main(String[] args) {
            String logFileName = "temp_application_error.log";
    
            boolean startsWithTemp = logFileName.startsWith("temp_");
            boolean endsWithLog = logFileName.endsWith(".log");
    
            System.out.println("Does '" + logFileName + "' start with 'temp_'? " + startsWithTemp);
            System.out.println("Does '" + logFileName + "' end with '.log'? " + endsWithLog);
    
            // Combine checks using the logical AND operator (&&)
            boolean isTempLogFile = startsWithTemp && endsWithLog;
            System.out.println("Is '" + logFileName + "' a temporary log file? " + isTempLogFile);
    
            String anotherFile = "data_report.txt";
    
            boolean startsWithData = anotherFile.startsWith("data_");
            boolean endsWithTxt = anotherFile.endsWith(".txt");
    
            System.out.println("Does '" + anotherFile + "' start with 'data_'? " + startsWithData);
            System.out.println("Does '" + anotherFile + "' end with '.txt'? " + endsWithTxt);
    
            boolean isDataTxtFile = startsWithData && endsWithTxt;
            System.out.println("Is '" + anotherFile + "' a data text file? " + isDataTxtFile);
        }
    }

    Neste código:

    • Introduzimos o método startsWith() para verificar o início das strings.
    • Usamos o operador lógico AND (&&) para combinar os resultados de startsWith() e endsWith(). O operador && retorna true somente se ambas as condições forem true.
  3. Salve o arquivo HelloJava.java.

  4. Compile o programa no Terminal:

    javac HelloJava.java
  5. Execute o programa compilado:

    java HelloJava

    Você deve ver uma saída semelhante a esta:

    Does 'temp_application_error.log' start with 'temp_'? true
    Does 'temp_application_error.log' end with '.log'? true
    Is 'temp_application_error.log' a temporary log file? true
    Does 'data_report.txt' start with 'data_'? true
    Does 'data_report.txt' end with '.txt'? true
    Is 'data_report.txt' a data text file? true

    Esta saída demonstra como você pode usar startsWith() e endsWith() em conjunto com operadores lógicos para realizar verificações de string mais complexas.

Você agora aprendeu como usar tanto startsWith() quanto endsWith() e combiná-los para verificar tanto o início quanto o fim de uma string. Esses métodos são ferramentas fundamentais para manipulação e validação de strings em Java.

Resumo

Neste laboratório, aprendemos como verificar se uma string termina com um sufixo específico em Java usando o método endsWith(). Exploramos seu uso básico para verificar sufixos como extensões de arquivo e observamos como ele retorna um valor booleano indicando se a string termina com o sufixo especificado.

Também investigamos a sensibilidade a maiúsculas e minúsculas do método endsWith() e aprendemos como realizar verificações case-insensitive (insensíveis a maiúsculas e minúsculas) convertendo a string e o sufixo para a mesma capitalização antes da comparação. Finalmente, combinamos os métodos startsWith() e endsWith() para verificar se uma string começa e termina com prefixos e sufixos específicos, demonstrando como esses métodos podem ser usados juntos para uma validação de string mais complexa.