8

複数行のテキストボックスに追加されたリストを並べ替えるルーチンをC#で作成しようとしています。それが完了したら、すべての空白行を削除するオプションがあります。誰かが私がこれをどうやってやるのか教えてもらえますか?これが私がこれまでに持っているものですが、ボックスを選択して並べ替えをクリックすると、まったく機能しません。

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

2 に答える 2

22

で文字列を分割する場合'\n'sortBox1を含む文字列は含まれません\n。しかし、私はただ使用String.IsNullOrWhiteSpaceします:

sortBox1.RemoveAll(string.IsNullOrWhiteSpace);
于 2012-12-16T01:13:58.600 に答える
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);
}
于 2012-12-16T01:17:36.103 に答える