Estou fazendo a validação de string, não devo ter espaços em branco e também não deve aceitar números.
Fiz o seguinte código:
packagevalidacao;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importjavax.swing.JOptionPane;publicclassValidarString{Stringnome;publicStringtestarNome(Stringnome){this.nome=nome;if(nome==""){System.out.println("O campo não pode ficar em branco!");}else{Patternpattern=newPattern("[0-9]");Matchermatcher=pattern.matcher(nome);if(matcher.find()){System.out.println("Não deve conter caracteres!");}else{returnnome;}}}publicstaticvoidmain(String[]args){ValidarStringvs=newValidarString();vs.testarNome("Kamilla7483");}}
Só que estou tendo erro quando faço Pattern pattern = new Pattern("[0-9]").
Olha essa mesagem está dizendo que não existe na sua classe Pattern um constructor que tenha como parâmetro uma String.
publicPattern(Stringsomething){}
Acho que isso deva resolver.
KamillaaaH
Mudei:
packagevalidacao;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importjavax.swing.JOptionPane;publicclassValidarString{Stringnome;publicPattern(Stringnome){}publicStringtestarNome(Stringnome){this.nome=nome;if(nome==""){System.out.println("O campo não pode ficar em branco!");}else{Patternpattern=newPattern("[0-9]");Matchermatcher=pattern.matcher(nome);if(matcher.find()){System.out.println("Não deve conter caracteres!");}else{returnnome;}}}publicstaticvoidmain(String[]args){ValidarStringvs=newValidarString();vs.testarNome("Kamilla7483");}}
Se você olhar bem, você vai perceber que você criou um método Pattern na classe ValidarString como se ele fosse um construtor da classe, mas não é, faça uma classe dentro da classe ValidarString com o nome Pattern, é aí que está o erro do seu programa!
ViniGodoy
No lugar de:
newPattern("[0-9]");
Use
Pattern.compile("[0-9]");
KamillaaaH
Agora o problema mudou…
packagevalidacao;importjava.util.regex.Matcher;publicclassValidarString{Stringnome;classPattern{Pattern(Stringnome){}publicMatchermatcher(Stringnome){returnnull;}}publicStringtestarNome(Stringnome){this.nome=nome;if(nome==""){System.out.println("O campo não pode ficar em branco!");}else{Patternpattern=newPattern("[0-9]");Matchermatcher=pattern.matcher(nome);if(matcher.find()){System.out.println("Não deve conter caracteres!");}}returnnome;}publicstaticvoidmain(String[]args){ValidarStringvs=newValidarString();vs.testarNome("Kamilla7483");}}
Cara… se eu criar a classe Pattern, terei que criar o método matcher… ele vai ter a mesma função que tinha quando eu importei o Pattern? =S
KamillaaaH
Acho que deu certo! XD
Olha só como ficou…
packagevalidacao;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassValidarString{Stringnome;publicStringtestarNome(Stringnome){this.nome=nome;if(nome==""){System.out.println("O campo não pode ficar em branco!");}else{Patternpattern=Pattern.compile("[0-9]");Matchermatcher=pattern.matcher(nome);if(matcher.find()){System.out.println("Não deve conter números!");}}returnnome;}publicstaticvoidmain(String[]args){ValidarStringvs=newValidarString();vs.testarNome("Kamilla7483");}}
KamillaaaH
Yeah! Deu certo! Obrigada, gente! Muito obrigada! =D
ViniGodoy
Só um detalhe… essa comparação está errada:
if(nome==""){
Teste assim:
if(nome.isEmpty()){
== não funciona para Strings. Outra opção é usar equals: