2014-12-12 25 views
5

ho una costante stringa definita in una classe (su Android?):virgolette Strani corda in java statica

public static final String ABC = "abc"; 

e voglio mettere a confronto, se un'altra stringa è uguale:

String test = "abc"; 
if (test.equals(OtherClass.ABC)) { 
    doSomething(); 
} 

questo test ha esito negativo in modo strano e quando ho ispezionare le variabili con Eclipse, vedo che ABC è di 2 caratteri più lungo di prova, e che assomiglia a questo:

ABC: "abc" 
test: abc 

Da dove vengono queste citazioni e come faccio a sbarazzarmene?

+2

L'editor di Eclipse durante il debug inserisce le virgolette attorno a Stringhe per impostazione predefinita. – Kon

+1

Non riesco a vedere come sia possibile che 'condizione' restituisca' false'. Puoi fornire un esempio compilabile che dimostri questo? –

+2

Queste citazioni provengono dal codice OtherClass.ABC ... che non hai incluso. Utilizzare il metodo replace (String, String) di String per risolvere il problema. – snickers10m

risposta

3

Hai ragione quando racchiude il valore con virgolette doppie extra nell'anteprima rapida.

enter image description here

Ma quando si controlla il valore dal punto di vista Expresions, allora il valore è corretto. Inoltre fissa il comportamento precedente della rapida anteprima

enter image description here

Ma ancora l'uscita è il previsto. I due valori sono uguali. Credo che questo sia un bug, dal momento che questo comportamento non ha senso per me. Potrei sbagliarmi comunque. Non so se questo ha aiutato, e se può essere considerato come una risposta, ma volevo includere gli screenshot e i commenti non lo supportano.

Il codice non proviene da un progetto Android. Solo un semplice progetto Java. Sto usando Eclipse Kepler.

class OtherClass { 
    public static final String ABC = "abc"; 
} 

public class MainJsoup { 

    public static void main(String[] args) throws Exception { 
     String test = "abc"; 
     if (test.equals(OtherClass.ABC)) { 
      System.out.println("They are equal."); 
     } else { 
      System.out.println("They are unequal."); 
      System.out.println("OtherClass.ABC = " + OtherClass.ABC); 
     } 
    } 
} 
+0

Sì, puoi vedere le diverse lunghezze nei tuoi screenshot, nel mio anche l'hash era diverso. Probabilmente qualche strana cosa androide quindi, indagherò di più, grazie! – sigma

+0

Più di una cosa strana di eclisse. Nessun problema. Sono contento di poterti aiutare. Divertiti. – alkis

+1

Wow, deve essere stata una strana cosa di caching di eclissi, era andata oggi. Non vedo l'ora di passare ad Android Studio e sperimentare anche i loro bug. : P thx per l'aiuto di tutti! – sigma