Как я могу присоединиться к массиву строк, но сначала удалить элементы пустого массива?

Я использую следующее:

return string.Join("\n", parts);

Части имеют 7 записей, но две из них - пустая строка "". Как я могу сначала удалить эти две записи, а затем присоединиться к оставшимся пяти?

Ответы

Ответ 1

Вы можете использовать Where в LINQ для выбора строк, которые не являются пустыми:

 return string.Join("\n", parts.Where(s => !string.IsNullOrEmpty(s)));

Ответ 2

Альтернативный способ сделать это - использовать StringSplitOptions.RemoveEmptyEntries:

например.

string yourString = "The|quick||brown|||fox|is|here";
char[] delimiter = new char[] { '|' };

string result = string.Join(",", yourString.Split(delimiter, StringSplitOptions.RemoveEmptyEntries));

Это дает:

быстрый, коричневый, лисы, есть здесь

@Stefan Steiger:

string yourString = "echo 'foo' | sed '/foo/d;'";

Это дает:

echo 'foo', sed '/foo/d;'

Как и следовало ожидать. См. dotnetfiddle of.

Ответ 3

Попробуйте использовать LINQ

string[] hello = new string[] { "ads", "zxc", "wer", "", "wer", "", "243" };
string newString = string.Join("\n", hello.Where(x => x.Trim().Length != 0));
MessageBox.Show(newString);

или

return string.Join("\n", hello.Where(x => x.Trim().Length != 0));

Ответ 4

Сделать это в .NET 2.0 (без LINQ), например. для служб ReportingServices без написания функции для нее:

С#

string a = "", b = "b", c = "", d = "d", e = "";
string lala = string.Join(" / ",
    string.Join("\u0008", new string[] { a, b, c, d, e }).Split(new char[] { '\u0008' }, System.StringSplitOptions.RemoveEmptyEntries)
);

System.Console.WriteLine(lala);

VB.NET

Dim a As String = "", b As String = "b", c As String = "", d As String = "d", e As String = ""
Dim lala As String = String.Join(" / ", String.Join(vbBack, New String() {a, b, c, d, e}).Split(New Char() {ControlChars.Back}, System.StringSplitOptions.RemoveEmptyEntries))

System.Console.WriteLine(lala)

Это предполагает, что обратное пространство символов не встречается в ваших строках (обычно должно быть верно, потому что вы не можете просто вводить этот символ с клавиатуры).