2
respostas

Validação do nome

insira seu código aqui
```Como que eu posso fazer para validar se oque realmente foi digitado é um nome? Números são recebidos pelo gets como String, então se o usuário digitar um numero como eu posso verificar se é realmente uma String ou um numero? 

#Jogo de advinhação do numero

def boas_vindas

    puts "Boas vindas"
    puts "Informe nome de jogador: "
    nome_invalido = true

    while nome_invalido

        nome = gets.strip.capitalize

        if nome.size == 0 or ALGUMA COISA QUE EU AINDA NAO SEI OQUE É
            nome_invalido = true
            puts "Favor informe um nome valido"
        else
            nome_invalido = false

        end
    end

        puts "Vamos jogar senhor(a) #{nome}!"
    nome
end

insira seu código aqui

```
insira seu código aqui
2 respostas

Olá Rafael, aqui você precisa definir bem o quê significa "ser um nome". Para isso existe uma coisa chamada Expressão Regular, que define várias strings que podem ser aceitas.

Supondo que a nossa definição de "ser um nome" é "uma string de qualquer tamanho que só contenha os caracteres de 'a' a 'z' e de 'A' a 'Z', então uma expressão regular que define isso é a seguinte:

[A-Za-z]

Além disso, precisamos que o nome não tenha mais nada, ou seja, comece com essa expressão regular e também termine com ela. Assim usamos as âncoras ^ e $ para representar o início e o fim da string. Ou seja, ficamos com:

^[A-Za-z]$

Por fim, usamos o método match da String para testar se ela é aceita por essa expressão regular: nome.match('^[A-Za-z]$')

Isso retorna nil quando é falso e um MatchData quando é verdadeiro, assim você pode usar a resposta booleana de nome.match('^[A-Za-z]$').nil? no seu if.

Para aprender mais sobre Expressões Regulares, dá uma olhada nesse curso aqui!

Abraços!

Obrigado pela elucidação.