0

生データを含む file -message.txtがあり、アプリケーションはファイルを読み取り、解析し、それに応じてデータをリストビューに表示します。生データにはREC UNREAD、レコードが未読であることを意味するという単語が含まれています。したがって、メッセージが読み取られるのは初めてであり、UNREADそのようなメッセージを に表示しますbold。私がそれを読んだ後(doubleclick イベントを使用して)、単語REC UNREADを に変更する必要がありますREC READ。これは私が試したものですが、うまくいきません

    private void lvwMessages_MouseDoubleClick_1(object sender, MouseEventArgs e)
    {
        try
        {
            ListViewItem item = lvwMessages.SelectedItems[0];
            if(item.Font.Bold)

                {
                    lvwMessages.SelectedItems[0].Font = new Font(lvwMessages.Font, FontStyle.Regular);
                    string tfile = File.ReadAllText("C:\\message.txt");
                    string m1 = lvwMessages.SelectedItems[0].SubItems[1].Text;
                    string m2 = lvwMessages.SelectedItems[0].SubItems[2].Text;
                    //No idea how to go forward from here

これは私のテキスト ファイルのサンプル行です。

+CMGL: 2,"REC UNREAD","+919030665834","","2012/08/10 17:04:15+22"
sample message

簡単に言えば、(コードのように) m1 と m2 を含む行を検索し、REC UNREAD を REC READ に置き換えることができるはずです。

4

2 に答える 2

1

これで問題が解決するはずです--

            ListViewItem item = lvwMessages.SelectedItems[0];
            if(item.Font.Bold)
                {
                    lvwMessages.SelectedItems[0].Font = new Font(lvwMessages.Font, FontStyle.Regular);
                    string tfile = File.ReadAllText("C:\\message.txt");
                    string m1 = lvwMessages.SelectedItems[0].SubItems[1].Text;
                    string m2 = lvwMessages.SelectedItems[0].SubItems[2].Text;
                    string line = string.Empty;
                    string nfile= "";
                    using (StreamReader sr = new StreamReader("C:\\message.txt"))
                    {
                      while ((line = sr.ReadLine()) != null)
                      {
                          if (line.Contains(m2)) 
                          {
                              string pline = line;
                             string result = line.Replace("REC UNREAD", "REC READ");
                             nfile= tfile.Replace(pline, result);
                          }
                       }
                   sr.Close();
                   }
                StreamWriter sw = new StreamWriter("C:\\message.txt");
                {
                    sw.Write(nfile);
                }
                sw.Close();                           
            }
于 2012-08-11T05:19:51.190 に答える
0

IndexOf と Replace に基づいてこのコードを試すことができます

string line = string.Empty;

using (StreamReader sr = new StreamReader("C:\\message.txt"))
{
  while ((line = sr.ReadLine()) != null)
  {
      if (line.IndexOf(m1) > 0 &&
      line.IndexOf(m2)  )
      {
         var result = line.Replace(m2, "READ");
      }
   }
}
于 2012-08-10T12:32:17.297 に答える