Метод VB.NET String.Join(separator, stringArray)
похож на метод PHP implode, но любые нулевые элементы в массиве заменяются пустой строкой, поэтому c:
Dim myArray() as String = { "a", null, "c" }
Console.WriteLine(String.Join(", ", myArray));
// Prints "a, , c"
Есть ли простой способ объединить набор строк с разделителем, который игнорирует пустые строки?
Мне не обязательно использовать массивы или String.Join или что-то еще. Мне просто нужны следующие преобразования:
("a", "b", "c") --> "a, b, c"
("a", null, "c") --> "a, c"
Ответы:
VB.NET
String.Join(",", myArray.Where(Function(s) Not String.IsNullOrEmpty(s)))
C #
String.Join(",", myArray.Where(s => !string.IsNullOrEmpty(s)))
источник
Array.FindAll(myArray, Function(s) Not String.IsNullOrEmpty(s))
можете ли вы изменить свой ответ или объяснитьWhere
утверждение?Where
Метод сSystem.Linq
, msdn.microsoft.com/en-us/library/bb534803.aspxдля C # ==>
String.Join(",", arr.Where(s => !String.IsNullOrEmpty(s)));
источник
Чтобы сделать это в .NET 2.0 (без LINQ), например, для SQL-Server ReportingServices без необходимости писать для него функцию:
VB.NET
C # (для тех, кто приземляется из Google и не ищет VB.NET)
Это предполагает, что в ваших строках не встречается символ обратного пробела (обычно это должно быть верно, потому что вы не можете просто ввести этот символ с клавиатуры).
Кроме того, если вы получаете значения из базы данных, это еще проще, поскольку вы можете делать это напрямую в SQL:
PostgreSQL и MySQL:
И даже с великолепным MS-SQL-Server возможно (PS: это сарказм):
источник
Попробуйте следующее:
источник
Это отлично работает для VB.NET
Join(*yourArray*.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray(), *yourDelimiter*)
источник