2012-10-08 15 views

答えて

24

あなたは空でない文字列を選択するために、LINQでWhereを使用することができます。

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

は、これを行うための別の方法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)); 
2

を使用して、それを試してみてくださいStringSplitOptions.RemoveEmptyEntriesを使用して:

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

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

これが与える:

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

これが与える:

ザ・クイック、茶色、キツネ、ここでは、

@Stefanタイガーです

エコー 'foo'、sed '/ foo/d;'

これは私が期待している通りです。 See the dotnetfiddle of it

+1

'' Values'は '' foo | bar || baz ||| baf "'のような 'string'ですか? – Michael

+0

そして、私は "echo 'foo' | sed '/ foo/d;'のような値を入力して、ひどく壊れます。 –

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) 

これは、文字のバックスペースがあなたの文字列では発生しないことを前提として(通常は、真でなければなりません単にキーボードでこの文字を入力することはできないからです)。

関連する問題