Contais, charAt e verificação de String

galera, testando aqui, gostaria de garantir que a String a ser fornecida, contivesse sempre letras Maiúsculas, minusculas, números e caracteres especiais.
eu sei que eu posso fazer isso usando “For” mas o método contains, ou algo da classe String não pode resolver isso mais facilmente sem eu ter que criar todo um vetor com o alfabeto ?!

Ja fez uma pesquisa no forum ? ja participei de um topico de um cara que fez algo parecido, da uma procurad ali em cima, no pesquisa do guj =D

Tem a classe Character, eu uso ela pra verificar se uma string contem somente numeros. Da uma googlada:

Character.isDigit é um exemplo, nao faltam exemplos para voce, basta procurar =D

regex faz isso muito facil

[quote=@Claudio_davi]galera, testando aqui, gostaria de garantir que a String a ser fornecida, contivesse sempre letras Maiúsculas, minusculas, números e caracteres especiais.
eu sei que eu posso fazer isso usando “For” mas o método contains, ou algo da classe String não pode resolver isso mais facilmente sem eu ter que criar todo um vetor com o alfabeto ?![/quote]

Isso é uma regra de validação de senha, certo?

Uma única expressão regular não resolve de modo trivial. É melhor usar várias delas. Por exemplo:

public static boolean senhaBoa (final String senha) {
    // Criterio 1: Senha com 8 caracteres ou mais
    if (senha.length() < 8) return false;
    // Criterio 2: Senha contém letras maiúsculas
    Pattern p2 = Pattern.compile ("[A-Z]");
    if ( ! p2.matcher (senha).find()) return false;
    // Criterio 3: Senha contém letras minúsculas
    Pattern p3 = Pattern.compile ("[a-z]");
    if ( ! p3.matcher (senha).find()) return false;
    // Criterio 4: Senha contém dígitos
    Pattern p4 = Pattern.compile ("[0-9]");
    if ( ! p4.matcher (senha).find()) return false;
    // Critério 5: Senha contém um dos seguintes caracteres especiais: + - * / = %
    Pattern p5 = Pattern.compile ("[-+*/=%]");
    if ( ! p5.matcher (senha).find()) return false;
    // senão...
    return true;
}

Entendi, eu tinha feito vários métodos menores pra fazer essa validação e fiquei procurando uma maneira mais fácil.
Só não entendi o por que do static no método e final no parâmetro. o resto eu darei uma pesquisada, como sobre esses Patterns que você usou aí :wink: