Bom dia,
estou tentando fazer um regez como se fosse um like do sql.
tipo:
eu escrevo uma String e ele me retorna todo objeto que tenha essa String no meio
se alguem puder me ajudar
Muito Obrigado.
Bom dia,
estou tentando fazer um regez como se fosse um like do sql.
tipo:
eu escrevo uma String e ele me retorna todo objeto que tenha essa String no meio
se alguem puder me ajudar
Muito Obrigado.
o codigo que estou tentando fazer:
public HashMap filtrar() throws Exception {
// Recuperando parâmetros vindo do HTML/JQuery e montando o VO
String pNmeCient = req.getParameter("pNme");
// Executando transação de banco com o auxílio do DAO
DAONomeCientifico dao = new DAONomeCientifico();
List<NomeCientificoVO> lista = dao.retornarTodos2();
Pattern padrao = Pattern.compile(pNmeCient);
// Montar saida HTML
ListRadio lr = new ListRadio("pRetLV");
for (Iterator<NomeCientificoVO> it = lista.iterator(); it.hasNext();) {
NomeCientificoVO vo = it.next();
Matcher pesquisa = padrao.matcher(vo.getTaxPlan());// o metodo gettaxplan retorna uma string
if(pesquisa.matches()){
Option op = new Option(vo.getIdt(), vo.getTaxPlan());
lr.addOption(op);
}
}
// Passando a parte dinâmica de conteúdo para as TAGs ({}) no HMTL mapeado
dados.put("LISTA", lr.getHTML());
return dados;
}
Olá, tem um função que se chama regionMatches(se a regiao da string bate com a palavra que voce procura), porem éla retorna somente um boolean(se tem ou não a palavra que voce esta procurando na string que ele está verificando).
public class Teste(){
private static boolean verificarString(String frase){
boolean flag = false;
for(int i = 0;i < frase.leght();i++){
//onde o x é o indice inicial, ele comessa a comparar a frase no indice 0 até o tamanho da String "bosta", que tem tamanho 5
//ou seja ele vai do indice 0 a 4 comparando caracter por caracter, depois ele vai do indice 1 ao 5 e assim sucessivamente
//até acabar a frase. Se houver alguma região que bateu com a palavra ela deve retornar true;
//P.S.: regionMaches() diferencia maiusculas de minusculas !
if(frase.regionMaches(x,"bosta",0,5)){
flag = true;
}
}
return flag;
}
public static void main(String args[]){
Teste t = new Teste();
if(t.verificarString("Esse programa so da bosta")){
System.out.println("A frase contem bosta!");
}
if(t.verificarString("Esse programa so da Bosta")){
System.out.println("A frase não contem bosta!");
}
if(t.verificarString("Esse programa so da certo")){
System.out.println("A frase não contem bosta!");
}
}
}
uuuuOwwwwwww
deu certo!
muito obrigado
Pode utilizar esta expressão regular .*TEXTO.*
Segue um exemplo
import java.util.*;
import java.util.regex.Pattern;
public class Principal {
public static void main(String[] args) throws Exception {
List<String> lista = new ArrayList<String>();
lista.add("valor 1");
lista.add("texto");
lista.add("informacao com um valor qualquer");
lista.add("algum dado");
lista.add("informação");
Pattern pattern = Pattern.compile(".*valor.*");
for (String str: lista) {
if (pattern.matcher(str).find())
System.out.println(str);
}
}
}
Acredito que isto te resolve...
Att