-2

行の隣に文字列を書きたいのですが、ランダムに任意の行になる可能性があります。また、行から行を削除する方法を知りたいのですが、私のStreamReader作品は次のとおりです。

using (StreamReader sb = new StreamReader("admin.txt"))
{
  string[] ffoo = File.ReadAllLines("admin.txt");
  string[] ppoof = ffoo[0].Split(';');

  string line;

  while ((line = sb.ReadLine()) != null)
  {
    if (line.StartsWith("#" + Server.Name.ToLower() + ": "))
    {
      string[] punch = line.Split(';');
      if (!punch.Contains(Channel.Name.ToLower()))
      {
        StringBuilder str = new StringBuilder("admin.txt");
        str.Append(Channel.Name.ToLower() + ";");
        return;
      }
  }
}

リストの作成方法は次のとおりです。

#main: alien;nobody;somebody;
#devs: headdev;wae;

メインチャネルの隣に何かを書き込むことができないだけで、問題なく読み取れます。つまり、devにあるその末尾の横にある行または文字列のみを書き込むことができ、メインに何かを書きたいと思っています。メインまたは開発から管理者を削除する方法に関する問題。また、このファイルはサイズが大きくなり、使用後に 500 行も含まれる可能性があります。大きなファイルの解決策を教えてください。よろしくお願いします。

4

1 に答える 1

0

StringBuilder.Append を呼び出すと、文字列の末尾に追加されます。

StringBuilder(string) コンストラクターを呼び出すと、コンストラクターのパラメーターとして渡された文字列に追加されます。

この場合、「Admin.txt」を文字列として渡していますが、本当は Admin.txt の内容を渡したいので、その内容を読み取る必要があります。

これでうまくいくはずです:

string[] lines = File.ReadAllLines("admin.txt");
for (int i = 0; i < lines.Length; i++)
{
        if (lines[i].StartsWith(string.Format("#{0}: ", Server.Name.ToLower()))
        {
            if (!lines[i].Split(';').Contains(Channel.Name.ToLower()))
                lines[i] += ";" + Channel.Name.ToLower();
        }
    }
File.WriteAllLines("admin.txt", lines);

何をしたいのか誤解していたら申し訳ありません。

于 2013-04-12T17:57:45.347 に答える