Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução

/**
 * Patrícia está desenvolvendo um sistema de análise de redes sociais e precisa extrair todas
 * as hashtags de um texto. Ela quer um programa que encontre todas as palavras que começam com "#".
 *
 * Crie um programa que receba um texto e exiba todas as hashtags encontradas.
 *
 * Exemplo de entrada:
 * Digite o texto: Olá #mundo! Estou aprendendo #Java e #programação.
 *
 * Saída esperada:
 * Hashtags encontradas: #mundo, #Java, #programação
 */

package com.github.lucasdevrj.exercicios.extraindohastagsdeumtexto;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Extracao {

    private String texto;

    private void setTexto(String texto) {
        this.texto = texto;
    }

    private String getTexto() {
        return texto;
    }

    public void extrairHashtags() {
        Scanner entrada = new Scanner(System.in);

        System.out.print("Digite o texto: ");
        setTexto(entrada.nextLine());

        Pattern padrao = Pattern.compile("#[a-zA-Z0-9çã]+");
        Matcher verificaSeTemPadrao = padrao.matcher(getTexto());

        StringBuilder hashtagsEncontradas = new StringBuilder();
        while (verificaSeTemPadrao.find()) {
            hashtagsEncontradas.append(verificaSeTemPadrao.group() + " ");
        }

        String resultado = hashtagsEncontradas.toString();
        System.out.println("Hashtags encontradas: " + resultado);
    }
}
package com.github.lucasdevrj.exercicios.extraindohastagsdeumtexto;

public class Principal {
    public static void main(String[] args) {
        Extracao extracao = new Extracao();
        extracao.extrairHashtags();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Certin?

1 resposta

Fala, Lucas! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou a classe Pattern e Matcher para identificar hashtags em Java, entendeu perfeitamente a importância da expressão regular para filtrar palavras que começam com # e usou bem o StringBuilder para acumular os resultados antes de exibir.

Algo bem legal para complementar é ajustar a regex para permitir hashtags com caracteres especiais mais comuns, como sublinhado _ ou acentos adicionais. Dessa maneira:

Pattern padrao = Pattern.compile("#[\\wçãáéíóú]+");

Isso faz com que o programa reconheça hashtags mais variadas, como #java_dev ou #programação.

E algumas boas práticas que você pode adotar são:

  • Validação: verificar se foram encontradas hashtags antes de imprimir, evitando saída vazia.
  • Legibilidade: usar nomes de variáveis mais descritivos, como matcher em vez de verificaSeTemPadrao.
  • Generalização: transformar a lógica em método que receba o texto como parâmetro, facilitando testes.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você prefere evoluir esse programa apenas para extrair hashtags ou já pensa em incluir funcionalidades como contagem de frequência e exportação para relatórios?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!