投稿者 heaven  (社会人) 投稿日時 2011/2/15 12:23:20
お返事ありがとうございます。
コメントの削除は「Regex.Replace(test, "/\*([^*]|\*[^/])*\*/", String.Empty)」で割と簡単に削除できましたが、行コメントの削除となると意外と難しいかったです^^;

対象ソースには、行コメントとの直前にもコードが綴られていたりする場合もあるのと、
るきおさんの、「StreamReader」では既に編集済みのソースコードを格納した変数から直接編集できなかったので、shuさんとるきおさんのコードを参考にミックスした感じで作らせていただきました。

本当に助かりました。m(_ _"m)


一応作成したコードを載せておきます。
        Dim read As New System.IO.StreamReader("C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis"))
        Dim text As String = read.ReadToEnd()



        If System.Text.RegularExpressions.Regex.IsMatch(text, ".*//.*"Then  'コメント有無チェック 

            Dim lst As New List(Of String)()  '読込みデータ格納用 


            Dim stm As New StringReader(text) '1行づつ読むためのStringReader 
            Dim strLine As String '行データ格納用 

            strLine = stm.ReadLine() 'とりあえず1行読む 


            Do While strLine IsNot Nothing

                Dim targetLine As String  '切り抜き用変数 

                '//の位置を取得  
                Dim pos As Integer = strLine.IndexOf("//")

                If pos >= 0 Then
                    '//が存在するならば、そこまでの文字列を切り抜く。  
                    targetLine = strLine.Substring(0, pos)
                    lst.Add(targetLine)

                Else
                    '//が存在しないならば、読み込んだ行全体が書き込む対象となる。  
                    targetLine = strLine
                    lst.Add(targetLine)

                End If

                '次の行をよむ 
                strLine = stm.ReadLine

            Loop

            '格納したデータを改行コードで結合 
            text = String.Join(vbCrLf, lst.ToArray)

        End If

        textbox1.text = text  '結果をTextBox1へ表示