Java / Groovy Como posso comparar corretamente dois valores de cadeia? .equals () não funciona

monty_bean:

Ok, isso está me deixando louco. Eu não sou muito experiente com Java / Groovy, mas por favor me aponte para a direção certa!

Eu tenho uma chamada GET com texto de resposta como "[" a " "b", "c"]"

Eu finalmente consegui-lo para ArrayList para percorrer para comparar strings. Tentei .equals (), .equalsIgnoreCase (), compareTo (), Objects.equals () etc. Ele não corresponde. Eu recebo "String não é o mesmo". o que estou perdendo?

def sb= new StringBuffer();
def rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

def line;
while((line=rd.readLine()) !=null) {
    sb.append(line);
}

//sb = "["a","b","c"]"

List<String> tempList = new ArrayList<String>(Arrays.asList(sb.replaceAll("\\[|\\]","").split(",")));
int count = 0;
String strToFind= "a";

for (String iT : tempList){
    if (strToFind.equals(iT)){
        log.debug("\nString the same\n");
    } else {
        log.debug("\nString not the same\n");
    }
}
Michael Michailidis:

Isso acontece porque a cadeia tentar jogo tem citações .. então você está fazendo a == "a" que não é o mesmo .. se você não quiser usar seu depurador para validar o que eu disse tentar comparar seus comprimentos (ou imprimi-los). a resposta se aplica para esta corda sb = "[" a " 'b', 'c']", que foi alimentado ao InputStreamReader da mesma forma que o forneceu.

BufferedReader rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream("[\"a\",\"b\",\"c\"]".getBytes())));

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=336606&siteId=1
Recomendado
Clasificación