我如何加入一个字符串数组,但首先删除数组中的空元素?

我使用以下内容:

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

零件有7个条目,但其中两个是空字符串“”。 如何首先删除这两个条目,然后加入剩下的五个?

您可以在LINQ中使用Where来选择非空的字符串:

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

另一种方法是使用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 。

尝试使用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)); 

要在.NET 2.0(无LINQ)中执行此操作,例如对于ReportingServices而不为其编写函数:

C#

 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) 

这假定字符串退格不会出现在您的字符串中(通常应该是true,因为您不能简单地通过键盘输入此字符)。