投稿者 heaven  (社会人) 投稿日時 2011/2/14 20:47:16
こんばんわ。
テキストファイルからC言語の「//」のコメント行を削除するプログラム(//から改行コードまで削除)を組んでいますが、自分が組んだプログラムだと最初の行が改行だったりすると無限ループに陥ってしまい回避方法が分かなく困っています。



        Dim read As New System.IO.StreamReader("C:\test.txt", System.Text.Encoding.GetEncoding("shift_jis"))
        Dim text As String = read.ReadToEnd()

        read.Close()


        If System.Text.RegularExpressions.Regex.IsMatch(text, ".*//.*"Then

            Const SearchWord As String = "//"
            Const SearchEndWord As String = vbCrLf


            Dim FoundIndex As Integer
            Dim FoundEnd As Integer
            Dim CutComment As String



            While 0 <= FoundIndex

                FoundIndex = text.IndexOf(SearchWord)
                FoundEnd = text.IndexOf(SearchEndWord)


                If FoundIndex > -1 Then

                    If FoundEnd = -1 Then 'EOFの時 

                        CutComment = text.Substring(FoundIndex)
                        text = Replace(text, CutComment, String.Empty)

                    Else

                        CutComment = Mid(text, FoundIndex + 1, FoundEnd)
                        text = Replace(text, CutComment, String.Empty)
                    End If

                Else

                    Exit While

                End If

            End While

        End If



上手く修正できる方がおられましたらよろしくお願いします。