Si tengo 5 variables de cadena y entre 0 y 5 de ellas son nulas o vacías, hay una forma fácil/breve de devolver la primera que no es nulo o vacío? Estoy utilizando .NET 3,5Cómo devuelvo la primera variable de cadena que no es nula o está vacía
Respuesta
var myString = new string[]{first, second, third, fouth, fifth}
.FirstOrDefault(s => !string.IsNullOrEmpty(s)) ?? "";
//if myString == "", then none of the strings contained a value
edición: eliminado Donde(), situado en el predicado FirstOrDefault(), gracias Yuriy
private static string FirstNonEmptyString(params string[] values)
{
return values.FirstOrDefault(x => !string.IsNullOrEmpty(x));
}
Llamado así:
Console.WriteLine(FirstNonEmptyString(one, two, three, four, five));
definir un método de extensión:
static string Or(this string value, string alternative) {
return string.IsNullOrEmpty(value) ? alternative : value;
}
Ahora se puede decir lo siguiente:
string result = str1.Or(str2).Or(str3).Or(str4) …
Si las cadenas están en un IEnumerable
puede utilizar First
o FirstOrDefault
:
strings.First(s => !string.IsNullOrEmpty(s))
1) Esta respuesta ya fue dada 2) 'Primero' arroja un IOE si todas las cadenas son nulas o están vacías – Will
@Will, 1) Creo que fui el primero en sugerir Primero/FirstOrDefault como una alternativa obvia a Where. 2) El interlocutor no especifica el comportamiento que quiere en el caso de que todas las cadenas sean nulas/vacías. Es por eso que sugerí ambos. –
hmmmm, estaba pasando a la memoria sobre FOD. Mi error. No creo que haya dicho nada en su pregunta sobre tirar si todas las cuerdas son nulas. Tampoco mencionaste ese pequeño hecho teensy. 'Primero 'lanzar es algo que la gente a menudo no se da cuenta y termina mordiéndolos por el culo. Pensé que podría ser importante para la gente que lee ver eso. – Will
Si está utilizando .NET 3.5 esto es muy fácil con Linq.
string[] strings = new[] {"", "a", "b", ""};
string firstNotNullOrEmpty =
strings.Where(s => !String.IsNullOrEmpty(s)).FirstOrDefault();
'First' tiene una anulación que hace que el' Dónde' no tenga sentido. Además, si todas las cadenas son nulas, arrojarías una InvalidOperationException aquí. Que mamaría el culo – Will
Creo que incluir el Where() lo hace más legible. ¿Por qué lanzaría 'InvalidOperationException'? – jrummell
abra LINQPad y pruebe esto: '(nueva cadena [] {(cadena) nulo}). Primero (x =>! Cadena.IsNullOrEmpty (x))' Verá que arroja una IOE, como Primero() es diseñado para hacer si no hay resultados coincidentes. FirstOrDefault() nunca arroja si no se encuentran resultados coincidentes; simplemente devuelve '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;
}
Sin árboles de expresión, sin abuso de LINQ, sin características de lenguaje oscuro. El mismo rendimiento en el tiempo de ejecución y un estudiante de CS de primer año pueden descubrir lo que estás haciendo.
Me siento mal por los estudiantes de primer año de CS que se mantienen a salvo de las características del lenguaje que hacen que codificar sea una alegría. – Will
@Will: el abuso de LINQ es un problema grave que afecta a nuestra comunidad, permite que todos sean parte de la solución, no el problema. – kervin
BTW Me encanta LINQ, acabo de convertir una biblioteca basada en XPath a LINQ a XML la semana pasada, y EF es mi ORM de elección. – kervin
- 1. La cadena es nula o está vacía
- 2. .Trim() cuando la cadena está vacía o nula
- 3. ¿Cómo comprobar si la matriz es nula o está vacía?
- 4. Oracle 10g: la columna está en blanco, pero no es nula o es una cadena vacía
- 5. ¿Cómo puedo verificar que una variable C# sea una cadena vacía "" o nula?
- 6. ¿Cómo puedo verificar si una cadena de servidor Sql es nula o está vacía?
- 7. plantillas de Django Python y prueba si una variable es una cadena nula o vacía
- 8. Linq: Comprobando si la columna de cadena tiene un valor (es decir, no es nula o está vacía)
- 9. Compruebe si la matriz está vacía o nula
- 10. Agregar a la cadena si la cadena no está vacía
- 11. ¿Cuál es la mejor manera de determinar si una variable de sesión es nula o está vacía en C#?
- 12. ¿Cómo comprobar si no hay cadena vacía y no está vacía en el servidor SQL?
- 13. ¿Por qué la salida de bcp es nula cuando la columna contiene una cadena vacía y una cadena vacía cuando la columna es nula?
- 14. Compruebe si la cadena está vacía
- 15. VBA Comprobar si la variable está vacía
- 16. Elemento XSD ¿Restricción no nula o vacía para Xml?
- 17. Eliminar la primera línea de archivo si está vacía
- 18. ¿Cuál es la sintaxis de PHP para verificar "no es nulo" o una cadena vacía?
- 19. Filehelpers ExcelStorage.ExtractRecords falla cuando la primera celda está vacía
- 20. Variable de script de shell no está vacía (opción -z)
- 21. PHP: ¿variable vacía o no establecida o qué?
- 22. Error de plantillas T4: cargando el archivo de inclusión ef.utility.cs.ttinclude devolvió una cadena vacía o nula
- 23. ¿Cómo puedo verificar si una matriz es nula/vacía?
- 24. Comprobar si la colección está vacía o no
- 25. Detectando entrada nula/vacía del usuario
- 26. ¿Cómo encontrar si una matriz json está vacía o no?
- 27. ¿Cómo comprobar que la próxima 'cabecera' en OCaml está vacía?
- 28. ¿Cómo verificar una variable indefinida o nula en JavaScript?
- 29. Cadena vacía de JSON
- 30. ListView ColumnHeader.Name es cadena vacía
¿Puedes actualizar tu pregunta para indicar qué versión de .NET estás utilizando? –
.NET 3.5. ¡Buen punto! –