Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Confrontare due stringhe

    Ragazzi premettendo che sto studiando java vi volevo chiedere se è possibile confrontare due stringhe di questo tipo es. stringa : C:\Documents and Settings\nome\Desktop\ciao;

    if(C:\Documents and Settings\nome\Desktop\ciao == C:\Documenti\...........){




    }

    se non mi sono spiegato bene ditemelo... grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    E' ovviamente possibile confrontare due stringhe, ma non in quel modo lì. Le stringhe sono oggetti e gli oggetti si confrontano usando il metodo equals() e non l'operatore ==.

    Tra l'altro mi pare che nel pezzo di codice che hai postato (se di pezzo di codice si può parlare) non hai nemmeno due stringhe, ma due cose che per il linguaggio Java non hanno alcun senso. Le stringhe sono "tokens" delimitati dalle virgolette.

    Se fai una ricerca su questo forum l'argomento sarà stato trattato almeno 30.000 volte e sicuramente, almeno una decina solo nell'ultima settimana.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ok ok ho capito..ma la mia domanda era anche se scrivo una stringa cosi' :
    (C:\Documents and Settings\nome\Desktop\ciao) quando la confronto con un'altra stringa che in questo caso sono percorsi di file me lo da come un errore o le confronta?
    il problema è se posso confrontare due percorsi ....

  4. #4
    Originariamente inviato da marco29
    ok ok ho capito..ma la mia domanda era anche se scrivo una stringa cosi' :
    (C:\Documents and Settings\nome\Desktop\ciao)
    Come fatto notare da LeleFT quella NON è una stringa, semmai così:

    codice:
    "C:\\Documents and Settings\\nome\\Desktop\\ciao"
    Originariamente inviato da marco29
    il problema è se posso confrontare due percorsi ....
    Una stringa è una stringa indipendentemente da ciò che contiene Java String
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Cerchiamo di capire per bene la problematica.
    Vuoi confrontare due stringhe o due "percorsi"? Perchè non sono esattamente la stessa cosa (almeno, non ad alto livello).

    Punto primo:
    (C:\Documents and Settings\nome\Desktop\ciao)

    questa NON è una stringa. E' semplicemente una riga che il compilatore interpreta come spazzatura.

    "C:\\Documents and Settings\\nome\\Desktop\\ciao"

    Questa è una stringa (le virgolette la delimitano e i caratteri speciali sono stati quotati).

    Se voglio verificare se due stringhe sono uguali uso il metodo equals:

    codice:
    String s1 = "C:\\Documents and Settings\\nome\\Desktop\\ciao";
    String s2 = "C:\\Documents and Settings\\nome\\pippo";
    
    if ( s1.equals(s2) ) {
       // Sono uguali
    }
    Se si tratta di percorsi a dei file, puoi anche usare la classe File... effettua banalmente lo stesso controllo, ma ti permette di avere delle funzioni in più da usare (ad esempio, è in grado di dirti se quel file esiste oppure no e se la stringa che gli passi è valida come percorso ad un file):

    codice:
    File f1 = new File("C:\\Documents and Settings\\nome\\Desktop\\ciao");
    File f2 = new File("C:\\Documents and Settings\\nome\\pippo");
    
    if ( f1.equals(f2) ) {
       // Sono uguali
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    in questo caso non sarebbe più comodo confrontare i path assoluti??
    cioè

    codice:
    File f1 = new File("C:\\Documents and Settings\\nome\\Desktop\\ciao");
    File f2 = new File("C:\\Documents and Settings\\nome\\pippo");
    
    if ( f1.getCanonicalPath().equals(f2.getCanonicalPath()) ) {
       // Sono uguali
    }
    mettendosi in un caso generico?
    RTFM Read That F*** Manual!!!

  7. #7
    Originariamente inviato da LeleFT
    Cerchiamo di capire per bene la problematica.
    Vuoi confrontare due stringhe o due "percorsi"? Perchè non sono esattamente la stessa cosa (almeno, non ad alto livello).

    Punto primo:
    (C:\Documents and Settings\nome\Desktop\ciao)

    questa NON è una stringa. E' semplicemente una riga che il compilatore interpreta come spazzatura.

    "C:\\Documents and Settings\\nome\\Desktop\\ciao"

    Questa è una stringa (le virgolette la delimitano e i caratteri speciali sono stati quotati).

    Se voglio verificare se due stringhe sono uguali uso il metodo equals:

    codice:
    String s1 = "C:\\Documents and Settings\\nome\\Desktop\\ciao";
    String s2 = "C:\\Documents and Settings\\nome\\pippo";
    
    if ( s1.equals(s2) ) {
       // Sono uguali
    }
    Se si tratta di percorsi a dei file, puoi anche usare la classe File... effettua banalmente lo stesso controllo, ma ti permette di avere delle funzioni in più da usare (ad esempio, è in grado di dirti se quel file esiste oppure no e se la stringa che gli passi è valida come percorso ad un file):

    codice:
    File f1 = new File("C:\\Documents and Settings\\nome\\Desktop\\ciao");
    File f2 = new File("C:\\Documents and Settings\\nome\\pippo");
    
    if ( f1.equals(f2) ) {
       // Sono uguali
    }
    Ciao.
    ok bene quindi per confrontare 2 percorsi utilizzo la classe file...

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da valia
    in questo caso non sarebbe più comodo confrontare i path assoluti??
    cioè

    codice:
    File f1 = new File("C:\\Documents and Settings\\nome\\Desktop\\ciao");
    File f2 = new File("C:\\Documents and Settings\\nome\\pippo");
    
    if ( f1.getCanonicalPath().equals(f2.getCanonicalPath()) ) {
       // Sono uguali
    }
    mettendosi in un caso generico?
    Sì. La mia era solo un'illustrazione di un possibile uso della classe File. Nella realtà non mi sarei mai sognato di effettuare un test simile...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.