Então galera estou tentando comparar duas Strings se há algo semelhante. Estou tentando implementar uma Lista Negra de Software e uma Lista dos Softwares Instalados em um cliente. As duas listas estão prontas, por exemplo:
Lista Negra = Adobe Mozzila Notepad
SoftwareInstalado[0] = Adobe Flash Player 11 Activex
SoftwareInstalado[1] = Adobe Phothoshop
SoftwareInstalado[3] = Notepad++
SoftwareInstalado[4] = Mozilla Firefox
SoftwareInstalado[5] = Adobe AIR
Lembrando que a Lista Negra era uma lista, porém converti ela para uma String.
Já tentei utilizar o contais e o indexOf, porém ele não entra no if:
if (softwareinstalado.contains(softwarelistanegra)) {
System.out.println("Software ILEGAL " + softwareinstalado);
}
Claro que nao foi implementado desta forma, coloquei chamando o método certinho para capturar a devida palavra. As palavras chegam corretamente, pois debuguei, mas não entra no IF, pois não reconhece que softwareinstalado contém na lista negra.
Como por exemplo
softwareinstalado = Adobe AIR
softwarelistanegra = Adobe
Certo drsmachado, chega dessa forma debugando, assim que está implementado.
if ("Adobe".contains("Adobe Flash Player 11 Activex")) {
System.out.println("Software ILEGAL " + softwareinstalado);
}
Chega exatamente dessa forma, porém não entra no if.
A minha dúvida é: O contains compara como se fosse um “equals” ou “equalsIgnoreCase” ou se existir uma palavra igual dentro de um contexto ele detecta?
Porque se for está muito estranho, tinha que funcionar
Claro que não vai funcionar, não é?
Veja bem, a palavra “Ação” contém a frase “Ação é o que o mundo precisa”?
Não.
Logo, isso
"Adobe".contains("Adobe Flash Player 11 Activex")
Jamais será consideradp um true.
Você pode inverter a comparação (talvez não seja boa idéia, mas…)
if("Adobe Flash Player 11 ActiveX".contains("Adobe")){
//Faz algo
}
Esta comparação retornaria true.
E, quanto a isso
A minha dúvida é: O contains compara como se fosse um "equals" ou "equalsIgnoreCase" ou se existir uma palavra igual dentro de um contexto ele detecta?
Muito obrigado pela resposta drsmachado, clareou bastante minha mente.
Surgiu um problema, comparação de duas frases (Strings).
Por exemplo:
Lista negra = Adobe Reader
Softwareinstalado = adobe R XII
Há alguma função java que acha algo em comum, por exemplo, Adobe é uma palavra comum entre as duas, nisso se ignorar o case e talz. Porém há outras palavras que as diferem…
o contains compara como se fosse o equals, ele não ignora cases. Um jeito e você dar .toLowerCase() nas strings antes de comparar, ai todas ficam minúsculas.
Ex:
String s1 = "TeSte";
String s2 = "isso é um teste";
if(s2.toLowerCase().contains(s1.toLowerCase()){
//Existe a palavra teste na string s2
}