Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Projeto] Exercício: Exibindo os caracteres

import { createInterface } from "readline";

const rl = createInterface({
  input: process.stdin,
  output: process.stdout,
});

rl.question("Digite a senha: ", (input) => {
  if (!input || input.trim() === "") {
    console.log("Você deve inserir sua senha!");
    rl.close();
    return;
  }

  let i = 1;
  for (let char of input) {
    console.log(`Caractere ${i}: ${char}`);
    i++;
  }

  rl.close();
});
4 respostas

Oi, Vitor! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei da forma como você tratou a validação da senha antes de percorrer os caracteres. O uso do trim() foi uma ótima escolha para evitar entradas vazias apenas com espaços. Também ficou muito organizado o uso do for...of para percorrer cada caractere da string, deixando o código mais legível.

Uma dica interessante para o futuro é utilizar o metodo split() para transformar a string em um array de caracteres. Veja este exemplo:


let senha = "alura123";

let caracteres = senha.split("");

console.log(caracteres);

Esse codigo separa cada letra da string em posicoes individuais dentro de um array, facilitando manipulacoes futuras.

Como foi para você praticar os laços de repetição nessa atividade? Teve alguma parte do exercício que ajudou a entender melhor o funcionamento do for...of?

Alura

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

Oi, Monalisa! Muito obrigado pela sugestão, faz sentido usar o split("") pra transformar a string em array e facilitar a iteração.

Mas fiquei com uma dúvida: no meu caso, o enunciado esperava a saída no formato “Caractere X: Y”. Usando o split, como você recomendaria manter essa formatação com o índice aparecendo (ex.: “Caractere 5: a”)?

Mais uma vez obrigado pelo feedback!

solução!

Oi, Vitor Hugo!

Sobre sua última dúvida, para manter o formato "Caractere X: Y" usando split(""), você pode combinar o array gerado com o método forEach(), porque ele já fornece automaticamente o índice de cada posição.

Algo assim:


const caracteres = input.split("");

caracteres.forEach((char, index) => {
  console.log(`Caractere ${index + 1}: ${char}`);
});

Dessa forma:

  • char representa o caractere atual.
  • index representa a posição no array.
  • O + 1 serve para começar a contagem em 1 ao invés de 0.

Fico à disposição. Abraços e bons estudos!

Oi, Monalisa! Agradeço a explicação e o exemplo.

Confesso que ainda não utilizo muito o forEach(), então ele nem passou pela minha cabeça. Achei essa solução mais elegante do que as alternativas que eu estava pensando.

Vou tentar aplicar mais essa estrutura nos próximos projetos e exercícios para praticar melhor o uso dela e me acostumar mais com esse tipo de iteração.

Obrigado pela ajuda e pela atenção!