Java / Groovy ¿Cómo correctamente comparar dos valores de cadena? .equals () no funciona

monty_bean:

Ok, esto me está volviendo loco. No soy muy inteligente con Java / Groovy pero por favor que me señale la dirección correcta!

Tengo una llamada GET con texto de respuesta como "[" a " "b", "c"]"

Finalmente llegué a arrayList a recorrer para comparar cadenas. Probé .equals (), .equalsIgnoreCase (), compareTo (), Objects.equals (), etc que no coincide. Me sale "String no es lo mismo". ¿Qué me estoy perdiendo?

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:

Eso sucede porque la cadena intenta partido tiene cotizaciones .. por lo que está haciendo a == "a" que no es lo mismo .. si no desea utilizar el depurador para validar lo que dije tratan de comparar sus longitudes (o imprimirlos). la respuesta se aplica a esta cadena = sb "[" a " 'b', 'c']", que fue alimentado a la InputStreamReader la misma manera que lo proporcionó.

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

Supongo que te gusta

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