O método VB.NET String.Join(separator, stringArray)
é semelhante ao implode do PHP, mas todos os elementos nulos na matriz são substituídos por uma string vazia, de modo que:
Dim myArray() as String = { "a", null, "c" }
Console.WriteLine(String.Join(", ", myArray));
// Prints "a, , c"
Existe uma maneira simples de concatenar um conjunto de strings com um separador que ignora strings vazias?
Eu não preciso necessariamente usar matrizes ou String.Join ou qualquer outra coisa. Eu só preciso das seguintes transformações:
("a", "b", "c") --> "a, b, c"
("a", null, "c") --> "a, c"
Respostas:
VB.NET
String.Join(",", myArray.Where(Function(s) Not String.IsNullOrEmpty(s)))
C #
String.Join(",", myArray.Where(s => !string.IsNullOrEmpty(s)))
fonte
Array.FindAll(myArray, Function(s) Not String.IsNullOrEmpty(s))
Você pode mudar sua resposta ou explicar aWhere
afirmação?Where
método é deSystem.Linq
, msdn.microsoft.com/en-us/library/bb534803.aspxpara C # ==>
String.Join(",", arr.Where(s => !String.IsNullOrEmpty(s)));
fonte
Para fazer isso em .NET 2.0 (sem LINQ), por exemplo, para SQL-Server ReportingServices sem ter que escrever uma função para ele:
VB.NET
C # (para aqueles que vêm do Google e não procuram VB.NET)
Isso pressupõe que o retrocesso do caractere não ocorre em suas strings (geralmente deve ser verdadeiro, porque você não pode simplesmente inserir esse caractere pelo teclado).
Além disso, se você obter os valores de um banco de dados, será ainda mais simples, pois você pode fazer isso diretamente no SQL:
PostgreSQL e MySQL:
E mesmo com o glorioso MS-SQL-Server é possível (PS: isso é sarcasmo):
fonte
Experimente o seguinte:
fonte
Isso funciona bem para VB.NET
Join(*yourArray*.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray(), *yourDelimiter*)
fonte