2010-03-31 10 views
17

Cosa è necessario per rendere le stringhe di conteggio dello spazio vuoto String.IsNullOrEmpty() vuote?String.IsNullOrEmpty() Cerca spazio

Es. Voglio che la segue per tornare true invece della solita false:

String.IsNullOrEmpty(" "); 

Esiste un approccio migliore rispetto:

String.IsNullOrEmpty(" ".Trim()); 

(Si noti che la domanda iniziale chiesto che cosa il ritorno sarebbe normalmente da qui il commenti spiacevoli, questo è stato sostituito con una domanda più sensata).

+8

Avete provato? Restituirà false, poiché la stringa che stai passando non è né nulle né la stringa vuota. – Paddy

+3

Perché non fai un semplice programma di test e provalo tu stesso? –

+0

Paddy: restituirà false se non uso Trim(). L'ho provato da solo ed è per questo che chiedo ai tuoi ragazzi. Dal mio punto di vista, visto che lo sviluppatore usa trim molto spesso, deve anche usare la funzione trim, era quello che pensavo. –

risposta

48

.NET 4.0 introdurrà il metodo String.IsNullOrWhiteSpace. Fino ad allora sarà necessario utilizzare Trim se si desidera gestire le stringhe di spazio bianco nello stesso modo in cui si gestiscono stringhe vuote.

Per il codice non usando .NET 4.0, un metodo di supporto per verificare null o stringhe vuote o spazi bianchi possono essere attuate in questo modo:

public static bool IsNullOrWhiteSpace(string value) 
{ 
    if (String.IsNullOrEmpty(value)) 
    { 
     return true; 
    } 

    return String.IsNullOrEmpty(value.Trim()); 
} 

Il String.IsNullOrEmpty non eseguirà alcuna rifilatura e sarà solo verificare se il string è un riferimento null o una stringa vuota.

+0

Hmm come si comporterà se lo si fa come metodo di estensione su String quando è uscito .net 4.0? ... o aspetta che tu non possa scrivere un'estensione su String solo su istanze di stringa, o sbaglio qui? – cyberzed

+0

@cyberzed, potrebbe essere una domanda da sola. Hai ragione riguardo ai metodi di estensione che si applicano solo alle istanze di stringa. E poiché il nuovo metodo su .NET 4.0 è un metodo statico sulla classe 'String', non si verificherà alcuna collisione. –

+0

Hehe, mi è venuta in mente la risposta proprio mentre premevo il pulsante "Aggiungi commento", così ho deciso di lasciarlo come riferimento per le altre persone :) – cyberzed

11
String.IsNullOrEmpty(" ") 

... restituisce false

String foo = null; 
String.IsNullOrEmpty(foo.Trim()) 

... genera un'eccezione come foo è nullo.

String.IsNullOrEmpty(foo) || foo.Trim() == String.Empty 

... Restituisce true

Naturalmente, è possibile implementare come una funzione di estensione:

static class StringExtensions 
{ 
    public static bool IsNullOrWhiteSpace(this string value) 
    { 
     return (String.IsNullOrEmpty(value) || String.IsNullOrEmpty(value.Trim())); 
    } 
}