0

このサイドは、リッチテキストボックス(コンマで区切られたユーザーのリスト)からテキストを取得し、各エントリを独自の行に書き込むことを目的としています。

ただし、そうではありません。私は何を間違えましたか?

if (chkWhiteList.Checked)
        {
            string rawUser = rtboxWhiteList.Text;
            string[] list = rawUser.Split(new char[] { ',' });

            foreach (string user in list)
            {
                using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
                {
                    whiteList.WriteLine(String.Format("{0}\r\n", user));
                }
            }
        }
4

6 に答える 6

5

using私はあなたとfor loop周りを交換します。そして、改行文字を削除します

using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
{
    foreach (string user in list)
    {
        whiteList.WriteLine(user);
    }
}
于 2011-07-28T14:27:14.803 に答える
3

foreach と using が間違っています。ストリームライターを設定するために使用する必要があり、これを使用してループ (foreach) を実行して行を書き込みます。

if (chkWhiteList.Checked)
    {
        string rawUser = rtboxWhiteList.Text;
        string[] list = rawUser.Split(new char[] { ',' });

        using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
        {
            foreach (string user in list)
            {
                whiteList.WriteLine(String.Format("{0}\r\n", user));
            }
        }
    }

(これはコードの大まかなハックです。)

于 2011-07-28T14:27:11.847 に答える
2

これを試して....

    if (chkWhiteList.Checked)
    {
        string rawUser = rtboxWhiteList.Text;
        string[] list = rawUser.Split(new char[] { ',' });

        using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
            {
                foreach (string user in list)
                {
                     whiteList.WriteLine(String.Format("{0}\r\n", user));
                }

            }
    }
于 2011-07-28T14:33:17.617 に答える
2
        {
            using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
            {
                whiteList.WriteLine(String.Format("{0}\r\n", user));
            }
        }

これにより、ユーザーとの1行で毎回ファイルに書き換えられます。

open ステートメントを前後に移動して、foreachすべてのユーザー名をファイルに書き出します。

于 2011-07-28T14:27:11.200 に答える
1

これは非常に簡単に解決できますFile.WriteAllLines

string rawUser = rtboxWhiteList.Text;            
string[] list = rawUser.Split(',');
System.IO.File.WriteAllLines(cleanDir + @"\white-list.txt", list);
于 2011-07-28T14:31:12.837 に答える
0

WriteLine 呼び出しは CRLF を追加しますが、String.Format には追加の CRLF が含まれています。したがって、ユーザーごとに 2 行を取得します。

また、using ステートメントは foreach の外にある必要があります (ist の文字列ユーザー)。

于 2011-07-28T14:27:50.377 に答える