2012-12-16 19 views
7

Çok Satırlı metin kutusuna eklenen bir listeyi sıralayan C# içinde bir rutin oluşturmaya çalışıyorum. Bu yapıldıktan sonra, tüm boş satırları kaldırmak için bir seçenek var. Birisi bana bunu nasıl yapacağımı söyleyebilir mi?C# List <string> boş satırları nasıl kaldırılır?

Eğer '\n' üzerinde dize bölme ediyorsanız
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); 
} 

cevap

20

, sortBox1 içeren bir dize içermez: Burada şimdiye kadar var, ama ben kutusunu seçtiğinizde hiç işe ve sıralama tıklamazsa ne \n. Sadece olsa String.IsNullOrWhiteSpace kullanırsınız:

sortBox1.Sort(); 

boş satır bir satır atlar, "\r\n" değildir:

sortBox1.RemoveAll(string.IsNullOrWhiteSpace); 
7

Sen satırları sıralamak için unuttum. Boş satırlar boş dizeler şunlardır:

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

dize bölme olduğunda da boş satırlar kaldırabilirsiniz:

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); 
} 
İlgili konular