Se ho 5 variabili stringa e tra 0 e 5 di esse sono nulle o vuote c'è un modo facile/breve di restituire il primo che non è null o vuoto? Sto usando .NET 3,5Come restituire la prima variabile stringa che non è nulla o vuota
risposta
var myString = new string[]{first, second, third, fouth, fifth}
.FirstOrDefault(s => !string.IsNullOrEmpty(s)) ?? "";
//if myString == "", then none of the strings contained a value
Edit: rimosso Dove(), posto predicato FirstOrDefault(), grazie Yuriy
private static string FirstNonEmptyString(params string[] values)
{
return values.FirstOrDefault(x => !string.IsNullOrEmpty(x));
}
Chiamato in questo modo:
Console.WriteLine(FirstNonEmptyString(one, two, three, four, five));
definire un metodo di estensione:
static string Or(this string value, string alternative) {
return string.IsNullOrEmpty(value) ? alternative : value;
}
Ora si può dire quanto segue:
string result = str1.Or(str2).Or(str3).Or(str4) …
Se le stringhe sono in una IEnumerable
è possibile utilizzare First
o FirstOrDefault
:
strings.First(s => !string.IsNullOrEmpty(s))
1) questa risposta era già stata data 2) 'Prima' lancia un IOE se tutte le stringhe sono nulle o vuote – Will
@Will, 1) Penso di essere stato il primo a suggerire Prima/FirstOrDefault come ovvia alternativa a Where. 2) L'interrogante non specifica il comportamento che desidera nel caso in cui tutte le stringhe siano nulle/vuote. Ecco perché ho suggerito entrambi. –
hmmmm, stava andando sul ricordo di FOD. Colpa mia. Non credo che abbia detto nulla nella sua domanda sul lancio se tutte le stringhe sono nulle. Anche tu non hai detto questo piccolo fatto. "Il primo lancio è qualcosa che le persone spesso non realizzano e finisce per mangiarle nel culo. Ho pensato che potrebbe essere importante per le persone leggere per vederlo. – Will
Se stai usando .NET 3.5 questo è molto facile con Linq.
string[] strings = new[] {"", "a", "b", ""};
string firstNotNullOrEmpty =
strings.Where(s => !String.IsNullOrEmpty(s)).FirstOrDefault();
'First' ha un override che rende il' Where' inutile. Inoltre, se tutte le stringhe sono nulle, invierete qui una eccezione InvalidOperationException. Quale sarebbe il culo. – Will
Trovo che includere Where() lo renda più leggibile. Perché dovrebbe lanciare "InvalidOperationException"? – jrummell
apri LINQPad e prova questo: '(nuova stringa [] {(stringa) null}). Primo (x =>! String.IsNullOrEmpty (x))" Vedrai che getta un IOE, poiché First() è progettato per fare se non ci sono risultati corrispondenti. FirstOrDefault() non getta mai se non vengono trovati risultati corrispondenti; restituisce semplicemente 'default (T)'. – Will
var found = new[]{first, second, third, fourth, fifth}.FirstOrDefault(x =>!String.IsNullOrEmpty(x));
Sì.
string selected = null;
foreach(string currStr in strArray)
if(String.IsNullOrEmpty(currStr)==false)
{
selected = currStr;
break;
}
Nessun albero di espressione, nessun abuso di LINQ, nessuna caratteristica del linguaggio oscuro. La stessa performance runtime e uno studente CS del primo anno possono capire cosa stai facendo.
Mi sento male per gli studenti CS del primo anno che sono al sicuro da caratteristiche linguistiche che rendono la programmazione una gioia. – Will
@Will: l'abuso di LINQ è un problema serio che riguarda la nostra comunità, fa sì che tutti siano parte della soluzione, non il problema. – kervin
BTW Amo LINQ, ho appena convertito una libreria basata su XPath in LINQ in XML la settimana scorsa, e EF è il mio ORM di scelta. – kervin
- 1. La stringa è nulla o vuota
- 2. .Trim() quando la stringa è vuota o nulla
- 3. Come restituire una stringa vuota se un oggetto è nullo?
- 4. Come verificare che la stringa non sia nulla in swift?
- 5. Operazione di assegnazione che non fa nulla se la variabile è nulla?
- 6. Mostra "Non fornito" quando la variabile è vuota o vuota nel database
- 7. Come verificare se una variabile di ambiente non è impostata o impostata sulla stringa vuota?
- 8. Come verificare una variabile non definita o nulla in JavaScript?
- 9. Controlla se la stringa è vuota
- 10. Come posso controllare che una variabile C# sia una stringa vuota "" o null?
- 11. VBA Controllare se la variabile è vuota
- 12. Come verificare se la stringa C è vuota
- 13. come verificare che la stringa SharedPreferences sia vuota o nullo * android
- 14. è possibile non restituire nulla da una funzione in python?
- 15. django stringa vuota e vuota
- 16. SQL Server: verificare se la variabile è vuota o NULL per la clausola WHERE
- 17. Come ottenere la prima cifra non nulla di un BigDecimal
- 18. Come posso assegnare una variabile da un metodo che potrebbe restituire nulla?
- 19. Come verificare se stringstream >> stringa non metterà nulla sulla stringa?
- 20. Aggiungi a stringa se stringa non vuota
- 21. Come fare in modo che i Contratti di codice ritengano che la variabile non sia nulla?
- 22. PostgreSQL NON clausola ILIKE non include stringa nulla Valori
- 23. stringa Perchè nulla non è un oggetto stringa
- 24. PowerShell considera stringa vuota come equivalente al nulla in istruzioni switch, ma non se le dichiarazioni
- 25. Modo rubino per verificare se una stringa non è vuota?
- 26. Come posso memoizzare un metodo che può restituire vero, falso o nulla in Ruby?
- 27. MVC non convalidare stringa vuota
- 28. Come rendere la funzione Max di LINQ restituire il valore predefinito se la sequenza è vuota?
- 29. La variabile statica Java diventa nulla
- 30. Differenza tra stringa vuota e stringa vuota ("")
È possibile aggiornare la domanda per indicare quale versione di .NET si sta utilizzando? –
.NET 3.5. Buon punto! –