o problema desta vez é o seguinte, eu preciso fazer um tratamento de busca similar a este:
String s1 = "O presidente dos Estado Unidos é Barack Obama"
String s2 = "A Região Centro-Oeste é composta por 3 Estados bem grandes"
Meu banco de dados:
“Estados Unidos”
objetivo
Eu preciso dizer que a palavra Estados Unidos encontra-se na String “s1”.
E tenho que obter falso para a String “s2”.
problema:
Como vocês perceberam falta um “s” no meio da string que estou querendo comparar com o valor que tenho no banco.
De que forma posso ter verdadeiro neste retorno ignorando o “s”(neste caso, porém pode haver necessidade de ignorar as letras “a” ou “o”).
Um probleminha muito chato, alguem pode me ajudar com relação a algum método que faça esse tipo de busca.
O Algoritmo de Levenshtein pode te ajudar, procure por ele no google. Ele calcula a “distância de levenshtein” entre duas strings, que quer dizer o minimo de caracteres que deve ser removido, substituido ou alterado na string1 para chegar a string2. Acho que cai bem pro seu caso, e com certeza deve ter por ai alguma implementação em Java.
Olá,
demorei mas não esqueci :roll:
Segue o código:
[code]import java.util.regex.*;
public class Test7 {
public static void main(String[] args) {
String regex = “Est.d.s? Unid.s”;
Pattern pattern = Pattern.compile(regex);
String s1 = "O presidente dos Estado Unidos é Barack Obama";
String s2 = "A Região Centro-Oeste é composta por 3 Estados bem grandes";
// verificando se o padrão se aplica à string 1
Matcher matcher = pattern.matcher(s1);
if(matcher.find())
System.out.println("s1="+matcher.group());
// verificando se o padrão se aplica à string 2
matcher = pattern.matcher(s2);
if(matcher.find())
System.out.println("s2="+matcher.group());
}
}[/code]
O padrão utilizado foi:
“Est.d.s? Unid.s”
onde,
. - significa que qualquer caractere pode estar presente no lugar. Se precisar utilizar o ponto (.) no padrão deverá ser utilizado \. na posição onde o pondo deve estar (neste caso é duas barrras invertidas pois no Java para imprimir \ deve-se usar \ nas strings).
s? - significa que o s pode ou não estar presente