ファイルの最終行を削除する。ファイルの末尾の改行コードを削除する。(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