Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [c#] String Compare

  1. #1

    [c#] String Compare

    Ciao Ragazzi,
    chiedo aiuto a chi è più esperto di me perchè evidentemente sto sbagliando qualcosa nella mia sintassi anche se in tutta onestà proprio non capisco dove. Mi spiego: ho scritto una routine che paragona una stringa che viene passata al metodo con una seconda stringa contenuta all'interno di un Arraylist che funziona come una sorta di un libreria.

    codice:
        //IDENTIFICA OGGETTO EMAIL
        public void Controlla(string Oggetto, string Email)
        {
            ArrayList myAL = new ArrayList();
            myAL.Add("Message Delivery Failure");
            myAL.Add("Delivery Status Notification (Failure)");
    
            foreach (object compara in myAL)
            {
    
                bool isEqual = string.Compare(Oggetto, Convert.ToString(compara), StringComparison.InvariantCultureIgnoreCase) == 0;
    
                Response.Write(Oggetto + "
    ");
                Response.Write(isEqual + "
    
    ");
            }
        }
    Nonostante le stringhe coincidano il valore bool isEqual resta a false.
    Dove Sbaglio?!


    Grazie in anticipo a tutti!

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Appena provata e sembra corretta, a me funziona.
    Magari la stringa che passi ha uno spazio finale, prova a mettere un trim

  3. #3
    Ciao Uranio,
    innanzitutto grazie dell'aiuto, ho modificato la routine così:

    codice:
        public void Controlla(string Oggetto, string Email)
        {
            ArrayList myAL = new ArrayList();
            myAL.Add("Message Delivery Failure");
            myAL.Add("Delivery Status Notification (Failure)");
    
            foreach (object compara in myAL)
            {
                string trimma_oggetto = Oggetto.Trim();
                string inizio_compara = Convert.ToString(compara);
                string trimma_compara = inizio_compara.Trim();
    
                int isEqual = string.Compare(trimma_oggetto, trimma_compara, StringComparison.InvariantCultureIgnoreCase);
    
                Response.Write(Oggetto + "
    ");
                Response.Write(isEqual + "
    
    ");
            }
        }
    Ma il risultato non cambia

    codice:
    Message Delivery Failure
    0
    
    Message Delivery Failure
    1
    Buh!

  4. #4
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Ed è giusto!
    Se string.Compare() restituisce 0 significa che le stringhe sono uguali.

  5. #5
    eheh si però come vedi al successivo compare restituisce uno!
    in ogni caso ho risolto con un lowcase oltre che con il trim!

    grazie mille per l'aiuto!
    Saluti

  6. #6
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Mi sfugge qualcosa...
    L'array conteneva
    "Message Delivery Failure"
    "Delivery Status Notification (Failure)"

    Tu controlli "Message Delivery Failure" e ti dice che il primo elemento dell'array è uguale (0) ed il secondo diverso (1)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.