2012-12-16 23 views
7

Próbuję utworzyć procedurę w języku C#, która sortuje listę dodaną do pola tekstowego Multi-Line. Po wykonaniu tej czynności istnieje możliwość usunięcia wszystkich pustych linii. Czy ktoś może mi powiedzieć, jak bym to zrobił? tutaj jest to, co mam tak daleko, ale to nie działa w ogóle, kiedy zaznacz pole i kliknij przycisk sortowania:Jak usunąć puste wiersze z listy 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); 
} 

Odpowiedz

20

Jeśli dzielenie ciąg na '\n', sortBox1 nie będzie zawierała ciąg zawierający \n. Chciałbym po prostu użyć String.IsNullOrWhiteSpace, choć:

sortBox1.RemoveAll(string.IsNullOrWhiteSpace); 
7

Zapomniałaś aby posortować wiersze:

sortBox1.Sort(); 

Pusta linia nie jest "\r\n", że jest przerwa linia. Puste wiersze są puste ciągi:

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

Można również usunąć puste wiersze po rozcięciu ciąg:

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); 
}