VisualBasic2008を使ってプログラミングしています。

str1に、vbCrLf で改行された文字列が格納されているとします。
そのstr1の、最後の行を削除するSubは、どのようなコードになるでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2009/12/30 07:54:35
  • 終了:2010/01/06 07:55:02

回答(3件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692009/12/30 09:35:12

ポイント27pt
str1=str1.Substring(1,str1.LastIndexOf(vbCrLf)-1)
id:ILoveWeb

エラーになってしまうのですが。

2009/12/30 09:48:26
id:tekk No.2

tekk回答回数5ベストアンサー獲得回数12009/12/30 15:15:14

ポイント27pt

最終行を取り除くには以下で対応ができると思います。最終行の末尾に改行コードがある場合と無い場合の両方に対応しています。

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)

そうではなくて、末尾の改行コードを取り除くのであれば以下で対応できます。

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)


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

http://d.hatena.ne.jp/tekk/20091230/1262153644

id:phero No.3

kawasaki回答回数55ベストアンサー獲得回数92009/12/30 16:14:28

ポイント26pt

これで動くはずです。

Dim a As String = "あいうえお" + vbCrLf + "かきくけこ" + vbCrLf + "さしすせそ"
MsgBox(a)

Dim b As String
b = a.Substring(0, a.LastIndexOf(vbCrLf))
MsgBox(b)
  • id:SALINGER
    失礼。C#でしか試してないけどこうかな。
    str1=str1.Substring(0,str1.LastIndexOf(vbCrLf))

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません