2012-12-16 76 views
7

我正在嘗試在C#中創建一個例程,它將添加到多行文本框中的列表排序。完成後,可以選擇刪除所有空白行。有人能告訴我如何去做這件事嗎?這裏是我到目前爲止,但是當我選擇框不會在所有的工作,然後點擊排序:如何從C#列表中刪除空白行<string>?

private void button1_Click(object sender, EventArgs e) 
{ 
    char[] delimiterChars = { ',',' ',':','|','\n' }; 
    List<string> sortBox1 = new List<string>(textBox2.Text.Split(delimiterChars)); 

    if (checkBox3.Checked) //REMOVE BLANK LINES FROM LIST 
    { 
     sortBox1.RemoveAll(item => item == "\r\n"); 
    } 

    textBox3.Text = string.Join("\r\n", sortBox1); 
} 

回答

20

如果你對分裂的'\n'字符串,sortBox1將不包含包含字符串\n。我只想用String.IsNullOrWhiteSpace,雖然:

sortBox1.RemoveAll(string.IsNullOrWhiteSpace); 
7

你忘了行排序:

sortBox1.Sort(); 

一個空行是不會"\r\n",這是一個換行符。空行是空字符串:

sortBox1.RemoveAll(item => item.Length == 0); 

分割字符串時,您還可以刪除空行:

private void button1_Click(object sender, EventArgs e) { 
    char[] delimiterChars = { ',',' ',':','|','\n' }; 

    StringSplitOptions options; 
    if (checkBox3.Checked) { 
     options = StringSplitOptions.RemoveEmptyEntries; 
    } else { 
     options = StringSplitOptions.None; 
    } 

    List<string> sortBox1 = new List<string>(textBox2.Text.Split(delimiterChars, options)); 
    sortBox1.Sort(); 
    textBox3.Text = string.Join("\r\n", sortBox1); 
}