Metode VB.NET String.Join(separator, stringArray)
mirip dengan implode PHP, tetapi elemen null apa pun dalam array diganti dengan string kosong, jadi c:
Dim myArray() as String = { "a", null, "c" }
Console.WriteLine(String.Join(", ", myArray));
// Prints "a, , c"
Apakah ada cara sederhana untuk menggabungkan sekumpulan string dengan pemisah yang mengabaikan string kosong?
Saya tidak perlu menggunakan array atau String.Join atau yang lainnya. Saya hanya perlu transformasi berikut:
("a", "b", "c") --> "a, b, c"
("a", null, "c") --> "a, c"
Jawaban:
VB.NET
String.Join(",", myArray.Where(Function(s) Not String.IsNullOrEmpty(s)))
C #
String.Join(",", myArray.Where(s => !string.IsNullOrEmpty(s)))
sumber
Array.FindAll(myArray, Function(s) Not String.IsNullOrEmpty(s))
Dapatkah Anda mengubah jawaban Anda atau menjelaskanWhere
pernyataannya?Where
metode adalah dariSystem.Linq
, msdn.microsoft.com/en-us/library/bb534803.aspxuntuk C # ==>
String.Join(",", arr.Where(s => !String.IsNullOrEmpty(s)));
sumber
Untuk melakukannya di .NET 2.0 (tanpa LINQ), misalnya untuk SQL-Server ReportingServices tanpa harus menulis fungsi untuk itu:
VB.NET
C # (untuk mereka yang mendarat dari google dan tidak mencari VB.NET)
Ini mengasumsikan bahwa spasi mundur karakter tidak terjadi dalam string Anda (biasanya harus benar, karena Anda tidak bisa begitu saja memasukkan karakter ini dengan keyboard).
Selain itu, jika Anda mendapatkan nilai dari database, ini lebih sederhana lagi, karena Anda dapat melakukannya di SQL secara langsung:
PostgreSQL & MySQL:
Dan bahkan dengan MS-SQL-Server yang mulia itu mungkin (PS: itu sarkasme):
sumber
Coba yang berikut ini:
sumber
Ini berfungsi dengan baik untuk VB.NET
Join(*yourArray*.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray(), *yourDelimiter*)
sumber