El método VB.NET String.Join(separator, stringArray)
es similar a la implosión de PHP, pero cualquier elemento nulo en la matriz se reemplaza con una cadena vacía, por lo que c:
Dim myArray() as String = { "a", null, "c" }
Console.WriteLine(String.Join(", ", myArray));
// Prints "a, , c"
¿Existe una forma sencilla de concatenar un conjunto de cadenas con un separador que ignora las cadenas vacías?
No necesariamente necesito usar matrices o String.Join o cualquier otra cosa. Solo necesito las siguientes transformaciones:
("a", "b", "c") --> "a, b, c"
("a", null, "c") --> "a, c"
Respuestas:
VB.NET
String.Join(",", myArray.Where(Function(s) Not String.IsNullOrEmpty(s)))
C#
String.Join(",", myArray.Where(s => !string.IsNullOrEmpty(s)))
fuente
Array.FindAll(myArray, Function(s) Not String.IsNullOrEmpty(s))
¿Puedes cambiar tu respuesta o explicar laWhere
afirmación?Where
El método es deSystem.Linq
, msdn.microsoft.com/en-us/library/bb534803.aspxpara C # ==>
String.Join(",", arr.Where(s => !String.IsNullOrEmpty(s)));
fuente
Para hacerlo en .NET 2.0 (sin LINQ), por ejemplo, para SQL-Server ReportingServices sin tener que escribir una función para ello:
VB.NET
C # (para aquellos que aterrizan en Google y no buscan VB.NET)
Esto supone que el retroceso del carácter no ocurre en sus cadenas (normalmente debería ser cierto, porque no puede simplemente ingresar este carácter con el teclado).
Además, si obtiene los valores de una base de datos, entonces es aún más simple, ya que puede hacerlo en SQL directamente:
PostgreSQL y MySQL:
E incluso con el glorioso MS-SQL-Server es posible (PD: eso es sarcasmo):
fuente
Intente lo siguiente:
fuente
Esto funciona bien para VB.NET
Join(*yourArray*.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray(), *yourDelimiter*)
fuente