Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Conti

Comparacao de String

Recommended Posts

Fala ae Galera tudo certo? Então estou com um problema entre comparaçao de string vou tentar explicar para vocês

 

Tenho uma String chama da todasClasses ficando assim

 

String todasClasses = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, puxador, zeus";

 

Tambem tenho outra String chamada mostraClasses que vem do banco de dados com a classe do jogador

 

Então vamos supor que a String mostraClasses seja isso

 

String mostraClasses = "puxador, zeus";

 

Oque eu quero fazer é a todasClasses - mostraClasses ou seja isso teria que retorna o seguinte :

"minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao";

 

Eu tentei fazer isso porem não obtive sucesso

 

Olhem meu codigo

 

public static boolean in_array(DefaultListModel haystack, String needle) {
	    for(int i=0;i<haystack.size();i++) {
	        if(haystack.get(i).toString().equals(needle)) {
	            return true;
	        }
	    }
	    return false;
	}



String todasClasses = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, puxador, zeus";

String mostraClasses = "puxador, zeus";
		String[] explodetodas = todasClasses.split(", ");
		String[] explodeminhas = mostraClasses.split(", ");
		String all = "";
		for(String value : explodetodas){
		 if(!in_array(value, explodeminhas)){
			all = all+value+", ";
		 }
			
		}

 

 

Alguem pode me ajudar ? Em PHP Consegui se isso for util aqui o codigo

 

$minhasclasses = "minerador, camuflador, puxador";
$todasclasses = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, puxador, zeus";

$explodeminhas = explode(", ", $minhasclasses);
$explodetodas = explode(", ", $todasclasses);
$all = false;
foreach ($explodetodas as $value) {
 if (!in_array($value, $explodeminhas)) {
  $all .= $value.", ";
 }
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho até medo de perguntar o porquê de você ter persistido na sua base de dados um campo com o valor "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, puxador, zeus". :assobiando:

 

Mas já que estamos tratando de String por que não utilizar expressão regular?

 

public class Comparacao {

  public static void main(String[] args) {
    String todas = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, puxador, zeus";
    String mostra = "puxador, zeus";
    
    String saida = todas.replaceAll("\\s*puxador[\\s,]*|\\s*zeus[\\s,]*", "");    
    System.out.println(saida);
  }
  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu faria isso mas dinamico tipo

 

 

String todasClasses = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, arqueiro, puxador, zeus, jumper";
		String minhasClasses = todasClasses;
		String[] explodeminhas = minhasClasses.split(", ");
		String saida = "";
		for(int i=0; i<10; i++){
			saida = todasClasses.replaceAll("\\s*" + explodeminhas[i] + "[\\s,]*|\\s*", "");
		}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você pelo menos executou o código pra ver a saída? Não precisa de loop. Ele já faz exatamente o que você precisa. A saída do algoritmo que eu escrevi é: minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só montar a String com a expressão regular. Simples assim.

String regex = "\\s*" + mostra.replaceAll(", ", "[\\s,]*|");
String saida = todas.replaceAll(regex, "");

 

Agora se você não está familiarizado com regex sugiro que use array pra filtrar os campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw funciono

 

 

Cara funcionou mas agora descobri um problema as vezes como ele remove a classe ainda fica com , como vou tirar ?

 

 

Exemplo

 

String todasClasses = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, arqueiro, puxador, zeus, jumper";

 

 

acaba que a string minhas classes retorna assim ", , , , , , , , ,"; queria tirar as , e os espacos quando não houver como faco isso ~? pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vê se não fica mal acostumado.

String regex = "[\\s,]*" + mostra.replaceAll(", ", "[\\s,]*|");
String saida = todas.replaceAll(regex, "").replaceAll("\\s{2,}", " ");

Eu recomendo fortemente que reveja a sua modelagem de dados. Essa normalização da sua base de dados está furada... Mas por hora, esta solução resolve. :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara deu um problema tipo eu nao tenho nenhuma classe entao ele teria que mostrar

 

minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, arqueiro, puxador, zeus, jumper

 

Como ele mostrou : mineradoragricultorexploradorcamufladortankermago-da-escuridaoarqueiropuxadorzeusjumper

 

Outra coisa quando o cara tem uma das classes tipo a explorador fica errado olha como fica

minerador, agricultor, , camuflador, tanker, mago-da-escuridao, arqueiro, puxador, zeus, jumper

 

Queria que ficasse minerador, agricultor, camuflador, tanker, mago-da-escuridao, arqueiro, puxador, zeus, jumper

 

 

Cara se poder me ajudar te agradeco muito de coração porque nao manjo nada de expressao regular alias acho um bixo de 7 cabecas ^^^

Compartilhar este post


Link para o post
Compartilhar em outros sites


public class Comparacao {

 

public static void main(String[] args) {

String todas = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, puxador, zeus";

String mostra = "explorador, tanker, zeus";

String regex = "";

 

if (mostra != null && !"".equals(mostra)) {

regex = "[\\s,]*" + mostra.replaceAll(", ", "|[\\\\s,]*");

}

 

String saida = todas.replaceAll(regex, "").replaceAll("\\s{2,}", " ");

System.out.println(saida);

}

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba tu manja muito de expressao regular como pode isso oO isso e foda paks vlw mesmo cara :D

 

Como dizia um grande compositor : So os loucos sabem :(

 

 

Ola galera desculpa reupar esse post porem estou tento problema novamente

 

 

String todasClasses = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, arqueiro, puxador, zeus, jumper, encantador, modificador";String classetotais = "minerador, agricultor, explorador, camuflador, tanker, mago-da-escuridao, arqueiro, puxador, zeus, jumper, encantador";		String regex = "";	    	    if (classestotais != null && !"".equals(classestotais)) {	      regex = "[\\s,]*" + classestotais.replaceAll(", ", "|[\\\\s,]*");	    }	    saida = todasClasses.replaceAll(regex, "").replaceAll("\\s{2,}", " ");	    		if(saida.length()==0){			saida="Você ja possui todas as classes";		}

O unico problema e que em vez de retornar

 

 

modificador

esta retornando

 

, modificador

 

alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo sinceramente essa modelagem ai tá toda errada, recomendo fortemente que reveja a modelagem. Senão você vai viver tapando buraco no seu programa.

Flw´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.