ブログトップ 記事一覧 ログイン 無料ブログ開設

tekkの日記 C#,VB.NET このページをアンテナに追加 RSSフィード Twitter

人気記事 No.1 どんなオブジェクトでもコピーできる汎用のディープコピー処理   codeplexにて公開しているオープンソースプロジェクトcreate hyper-v Server USB Memory

おすすめ記事!Windows 8 を体験しよう。気軽に試せるVHDインストール。みんなで試そう。Go Metro!

2009-12-30

ファイルの最終行を削除する。ファイルの末尾の改行コードを削除する。(String.LastIndexOf)

| 15:14 | ファイルの最終行を削除する。ファイルの末尾の改行コードを削除する。(String.LastIndexOf)を含むブックマーク

ファイルの最終行を削除する場合は、String.LastIndexOfで末尾から改行コード(vbCrLf)を検索して見つかった位置からの文字列を削除します。すべての行に改行コードが付いている場合は、ファイルの末尾から2つ目の位置にある改行コード以降の文字列を最終行となります。但し、最終行に改行コードが付いていないケースを想定すると、String.LastIndexOfで見つけた1つ目の位置以降を最終行と考える必要があります。

また、改行コードが見つからない場合は文字列全体が最終行となります。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim str1 As String = "Hello World" + vbCrLf + "It's a wonderful world" + vbCrLf + "love & peace" + vbCrLf

        Dim vbcrlfPos As Integer = str1.LastIndexOf(vbCrLf)
        If vbcrlfPos >= 0 Then

            If vbcrlfPos = str1.Length - vbCrLf.Length Then
                ' 末尾が改行の場合は、もう一つ前の改行位置を取得する。
                vbcrlfPos = str1.LastIndexOf(vbCrLf, str1.Length - vbCrLf.Length)
            End If

            ' 最終行を取り除く
            str1 = str1.Substring(0, vbcrlfPos + vbCrLf.Length)

        Else
            ' 改行コードが無い場合は、文字列全体を最終行とみなす。
            str1 = String.Empty
        End If

        Debug.Print(str1)

    End Sub

ファイルの末尾の改行コードを削除する場合は簡単で、LastIndexOfで見つけた場所以降を切り出します。

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim str1 As String = "Hello World" + vbCrLf + "It's a wonderful world" + vbCrLf + "love & peace" + vbCrLf

        Dim vbcrlfPos As Integer = str1.LastIndexOf(vbCrLf)
        If vbcrlfPos >= 0 Then
            ' 末尾の改行を取り除く
            str1 = str1.Substring(0, vbcrlfPos)
        End If

        Debug.Print(str1)

    End Sub

トラックバック - http://d.hatena.ne.jp/tekk/20091230/1262153644