C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C# 特定の文字列を含む行の削除の仕方


(過去ログ 113 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■67086 / inTopicNo.1)  C# 特定の文字列を含む行の削除の仕方
  
□投稿者/ septem (1回)-(2013/07/01(Mon) 22:30:42)

分類:[C#] 

C#でとあるテキストエディタの開発をしています。

それでリッチテキストボックスにテキストファイルを読み込んだ際に
余計な文字列を含む行を全て削除したいのですがソースコードの書き方がわかりません。

//を含む行をすべて削除しようと思っています。
具体的にはこのようなものにしたいです。

※リッチテキストボックスを使用

[削除前]

タイトル:サンプルタイトル
使用物:例題サンプル
//本題サンプル
開催時間:12:00~14:00
解散予定時間:14:10//遅れる可能性アリ



[削除後]

タイトル:サンプルタイトル
使用物:例題サンプル
開催時間:12:00~14:00


このように削除したいのでよかったらソースの書き方を教えてください。
よろしくお願いします。

引用返信 編集キー/
■67088 / inTopicNo.2)  Re[1]: C# 特定の文字列を含む行の削除の仕方
□投稿者/ こりんご (12回)-(2013/07/02(Tue) 14:54:56)
2013/07/02(Tue) 21:07:04 編集(投稿者)
No67086 (septem さん) に返信
> C#でとあるテキストエディタの開発をしています。
> 
> それでリッチテキストボックスにテキストファイルを読み込んだ際に
> 余計な文字列を含む行を全て削除したいのですがソースコードの書き方がわかりません。
> 
> //を含む行をすべて削除しようと思っています。
> 具体的にはこのようなものにしたいです。
> 
> ※リッチテキストボックスを使用
> 
> [削除前]
> 
> タイトル:サンプルタイトル
> 使用物:例題サンプル
> //本題サンプル
> 開催時間:12:00~14:00
> 解散予定時間:14:10//遅れる可能性アリ
> 
> 
> 
> [削除後]
> 
> タイトル:サンプルタイトル
> 使用物:例題サンプル
> 開催時間:12:00~14:00
> 
> 
> このように削除したいのでよかったらソースの書き方を教えてください。
> よろしくお願いします。

とりあえずテキストボックスを使った場合で検証したもの。(textBox1)

using System.Text.RegularExpressions; //正規表現

namespace C__正規表現
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Regex re = new Regex(".*//.*", RegexOptions.Multiline);
            Match m = re.Match(textBox1.Text);

            while (m.Success)
            {
                textBox1.Text = textBox1.Text.Replace(m.Value,"");
                m = m.NextMatch();
            }
        }
    }
}

それをrichTextBox1に直せばいけるかも?(3箇所)
⇒元々の読み込みが一括ではなく1行毎なら
他の方法もあるのかも?

引用返信 編集キー/
■67090 / inTopicNo.3)  Re[2]: C# 特定の文字列を含む行の削除の仕方
□投稿者/ επιστημη (53回)-(2013/07/02(Tue) 19:43:50)
επιστημη さんの Web サイト
>>//を含む行をすべて削除しようと思っています。

読み込んだ時点で"//"を含む行を除外するココロミ:

using System;
using System.Collections.Generic;
using System.IO;

/*
 * "//" を含む行を削除する
 */

class Program {
  static void Main(string[] args) {
    List<string> lines = new List<string>(); // 結果はココに。
    foreach ( string line in File.ReadAllLines("../../Program.cs") ) { // 自分自身を食わす
      if ( line.IndexOf("//") < 0 ) {
        lines.Add(line);
      }
    }
    // 結果を確認する。
    foreach ( string line in lines ) Console.WriteLine(line);
  }
}

引用返信 編集キー/
■67091 / inTopicNo.4)  Re[2]: C# 特定の文字列を含む行の削除の仕方
□投稿者/ septem (2回)-(2013/07/02(Tue) 23:40:08)
No67088 (こりんご さん) に返信
> 2013/07/02(Tue) 21:07:04 編集(投稿者)
> 
> ■No67086 (septem さん) に返信
> 
> とりあえずテキストボックスを使った場合で検証したもの。(textBox1)
> 
> using System.Text.RegularExpressions; //正規表現
> 
> namespace C__正規表現
> {
>     public partial class Form1 : Form
>     {
>         public Form1()
>         {
>             InitializeComponent();
>         }
> 
>         private void button1_Click(object sender, EventArgs e)
>         {
>             Regex re = new Regex(".*//.*", RegexOptions.Multiline);
>             Match m = re.Match(textBox1.Text);
> 
>             while (m.Success)
>             {
>                 textBox1.Text = textBox1.Text.Replace(m.Value,"");
>                 m = m.NextMatch();
>             }
>         }
>     }
> }
> 
> それをrichTextBox1に直せばいけるかも?(3箇所)
> ⇒元々の読み込みが一括ではなく1行毎なら
> 他の方法もあるのかも?

ありがとうございます
理解しつつ書こうとしたので少し大変でしたがそのプログラムがどのように動いてるのかを理解できました。
一つ勉強になりました。ありがとうございます

引用返信 編集キー/
■67092 / inTopicNo.5)  Re[3]: C# 特定の文字列を含む行の削除の仕方
□投稿者/ septem (3回)-(2013/07/02(Tue) 23:43:36)
No67090 (επιστημη さん) に返信
> >>//を含む行をすべて削除しようと思っています。
>
> 読み込んだ時点で"//"を含む行を除外するココロミ:
>
> using System;
> using System.Collections.Generic;
> using System.IO;
>
> /*
> * "//" を含む行を削除する
> */
>
> class Program {
> static void Main(string[] args) {
> List<string> lines = new List<string>(); // 結果はココに。
> foreach ( string line in File.ReadAllLines("../../Program.cs") ) { // 自分自身を食わす
> if ( line.IndexOf("//") < 0 ) {
> lines.Add(line);
> }
> }
> // 結果を確認する。
> foreach ( string line in lines ) Console.WriteLine(line);
> }
> }
>

これはコンパクトでいいですね。
IndexOfも使ったことがあったのでわかりやすかったです。
さっそくプログラムを動かしてみようと思います。
ありがとうございました。これで締め切ります
解決済み
引用返信 編集キー/
■67093 / inTopicNo.6)  Re[4]: C# 特定の文字列を含む行の削除の仕方
□投稿者/ επιστημη (54回)-(2013/07/03(Wed) 05:08:47)
επιστημη さんの Web サイト
> これはコンパクトでいいですね。

もっと削った。

  static void Main() {
    List<string> lines = new List<string>(); // 結果はココに。
    Array.ForEach(File.ReadAllLines("../../Program.cs"), (line) => { if ( line.IndexOf("//") < 0 ) lines.Add(line);});
    // 結果を確認する。
    foreach ( string line in lines ) Console.WriteLine(line);
  }

さらに悪ノリ。

  static void Main() {
    List<string> lines = new List<string>(from line in File.ReadAllLines("../../Program.cs") where line.IndexOf("//") < 0 select line);
    // 結果を確認する。
     foreach ( string line in lines ) Console.WriteLine(line);
  }

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -