GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[RESOLVIDO] Valor de uma parte do JTextField

java
Tags: #<Tag:0x00007ff3fe145f10>

#1

Estou com um dúvida,quero detectar uma certa palavra dentro de um JTextField
Por exemplo,a palavra que quero é : Olá
E alguém digita dentro do JTextField : “Olá todo mundo!” e clica em um JButton
Queria que no actionListener do JButton de alguma forma detectasse a palavra Olá em qualquer parte do JTextField e se no caso,tivesse a palavra Olá em alguma parte do JTextField,imprimisse no console : System.out.println(“Você digitou a palavra : Olá no JTextField”);
Obrigado
Tarik


#2

Pesquise pelo método contains


#3

Obrigado mesmo!Isto me ajudará muito pela frente :+1:


#4

Uma pergunta,aproveitando o tópico,eu estou desenvolvendo um chat,só para testes,quero que se no JTextField tiver alguma palavra de baixo calão,ele a troque por : ****,ou seja:
if(Jtextfield.getText().contains(“algum palavrão qualquer”)){
//Troque esta palavra por : ****
}

Eu não sei fazer isto,talvez você tenha a resposta. Grato mais uma vez Tarik

#5

Neste caso, você nem precisa do contains, pode ir direto pro replace, que vai substituir o que coincide com o digitado e manter o restante.
Depois, colocar o if dentro de um laço de repetição

List<String> palavroes = new ArrayList<>();
palavroes.add("politico");
palavroes.add("bobo");
palavroes.add("feio");
palavroes.add("chato");

String textoDigitado = jTextField.getText();

for(String palavrao : palavroes) {
     textoDigitado = textoDigitado.toLowerCase().replace(palavrao, "****");
}

Acho que isso resolve.

P.S.: Uma boa dica é dar uma olhada na documentação da classe String. Lá você encontra os métodos que sugeri e diversos outros, além de detalhes da classe.
A Documentação é sempre útil quando você quer entender mais a fundo alguma cojsa no java.


#6

@darlan_machado , qual a diferença do Método Contains pra o Pattern?

Eu precisei extrair uma parte de um text e usei isso (Funciona perfeitamente):

final Pattern p = Pattern.compile("Mensagem\\s+Respondida\\s+pelo\\s+Celular:(\\s+)?([\\d.+ -]+)");
final String smsRespondida = campolog.getText();
Matcher m = p.matcher(smsRespondida);
if (m.find()) {
final String mensagem = m.group(0);
final String resposta = m.group(2);

System.out.println("Resposta: " + mensagem + " ");
if (resposta.equals("1")) {
campolog.setText("<html><head></head><body><b> <center><font face= Arial><font size=6><font color=green> O MORADOR AUTORIZOU A ENTRADA DO VISITANTE! </font></center></b></body></html>");
} else {
        campolog.setText("<html><head></head><body><b> <center><font face= Arial><font size=6><font color=red> O MORADOR NÃO AUTORIZOU A ENTRADA DO VISITANTE! </font></center></b></body></html>");
        }
    } else {
        System.out.println("Nada encontrado");
    }

#7

@Abner_Rodrigues o método contains, é um método dos objetos da classe java.lang.String e aceita um CharSequence como parâmetro, não aceita regex (posso estar enganado, mas foi a documentação quem me iludiu).
Já a classe java.util.regex.Pattern está diretamente associada ao regex, tanto que o próprio nome da classe já ilustra isso.
Quanto a utilidade, se você tem um texto qualquer e precisa confirmar se determinada palavra ou conjunto de palavras está dentro do texto, pode usar o contains.
Agora, se você precisa verificar qualquer coisa que dependa de uma regex, então, o contains não é capaz de ajudar. Nestes casos é que o Pattern deve ser utilizado.

Veja que no meu último exemplo, a respeito do replace, sugeri transformar a String em lowerCase, isso não seria necessário se você está buscando com a regex adequada.


#8

Ahhhhhh, entendi. Valeu!!