VisualBasic2008ExpressEditionでプログラムしています。


以下のような処理をしてくれるサブルーチンを作りたいです。

1. strGivenの中に、strFindに格納されているのと同じ文字列が存在するかどうか、strGivenの先頭から順に探す。
2. もし存在しなかったら、strGivenに"NotExist"を代入する。
3. もし発見されたら、strGivenの値のうち、strFindに格納されている文字列そのものを含む、その部分から見て先頭側を、削除する。

つきましては、コードをご教示ください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/10/26 14:58:35
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rsc96074 No.1

回答回数4503ベストアンサー獲得回数437

ポイント100pt

 Form1.vb[デザイン]に適当に、Button1とTextBox1とTextBox2とTextBox3を作って、下記コードで動くようですが参考になれば幸いです。strFindごと削除したい場合は、

strResultOfFind = Mid(strGiven, n + Len(strFind))

に変えて下さい。

Public Class Form1

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

Dim strGiven As String, strFind As String, strResultOfFind As String = ""

strGiven = TextBox1.Text

strFind = TextBox2.Text

test(strGiven, strFind, strResultOfFind)

TextBox3.Text = strResultOfFind

End Sub

Private Sub test(ByVal strGiven As String, ByVal strFind As String, ByRef strResultOfFind As String)

Dim n As Integer = InStr(strGiven, strFind)

If n = 0 Then

strResultOfFind = "NotExist"

Else

strResultOfFind = Mid(strGiven, n)

End If

End Sub

End Class

  • id:rsc96074
     すみません。前問と混同していました。strFindごと削除したい場合は、
    result = Mid(strGiven, n + Len(strFind))
    に変えて下さい。

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim strGiven As String, strFind As String
    strGiven = TextBox1.Text
    strFind = TextBox2.Text

    test(strGiven, strFind)
    TextBox3.Text = strGiven
    End Sub

    Private Sub test(ByRef strGiven As String, ByVal strFind As String)
    Dim n As Integer = InStr(strGiven, strFind)
    Dim result As String = ""

    If n = 0 Then
    result = "NotExist"
    Else
    result = Mid(strGiven, n)
    End If
    strGiven = result
    End Sub

    End Class

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

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

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

回答リクエストを送信したユーザーはいません