玄関へお回り下さい。
文字列中から指定の文字を検索する (3個)             (SNo.018)

1.文字列の先頭から指定の文字を検索し見つかった位置から継続して検索
2.文字列を文末から検索し最初に見つかった位置を取得
3.文字列内に指定の文字がいくつあるか調べる
使用コントロール Button1 〜 Button3  Label1  TextBox1
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
 
★ 文字列の先頭から指定の文字を検索し見つかった位置から継続して検索
 
Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
'文字列の先頭から指定の文字を検索し見つかった位置から継続して検索
    TextBox1.Text = "ABC123abcabcあいうABC123abcあいうABC123abcあいう"
    Dim SearchChar As String = "abc"
    Dim dp, np As Integer
    Do
        dp = TextBox1.Text.IndexOf(SearchChar, np)    '検索
        If dp >= 0 Then         '見つかった場合
            TextBox1.Select(dp, SearchChar.Length)  '見つかった文字を強調表示
            'TextBoxBase.HideSelection プロパティ 
            'テキスト ボックス コントロールがフォーカスを失った時に
            '選択されているテキストが強調表示されたままに設定します。
            TextBox1.HideSelection = False
            MessageBox.Show(dp + 1 & " 文字目に見つかりました")
            TextBox1.HideSelection = True   '元に戻す(強調表示をしない)
            np = dp + SearchChar.Length  '見つかった文字の次の位置
        Else
            MessageBox.Show("指定の文字は見つかりませんでした")
            Exit Do
        End If
    Loop
End Sub
 
★ 文字列を文末から検索し最初に見つかった位置を取得
 
Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button2.Click
'文字列を文末から検索し最初に見つかった位置を取得
    TextBox1.Text = "ABC123abcabcあいうABC123abcあいうABC123abcあいう"
    Dim SearchChar As String = "abc"
    Dim dp, np As Integer
    dp = TextBox1.Text.LastIndexOf(SearchChar)     '検索
    If dp >= 0 Then         '見つかった場合
        TextBox1.Select(dp, SearchChar.Length)
        TextBox1.HideSelection = False
        MessageBox.Show(dp + 1 & " 文字目に見つかりました") '結果  34文字目
        TextBox1.HideSelection = True
    Else
        MessageBox.Show("指定の文字は見つかりませんでした")
    End If
End Sub
 
★ 文字列内に指定の文字がいくつあるか調べる
 
Private Sub Button3_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button3.Click
'文字列内に指定の文字がいくつあるか調べる
    Dim str1 As String = "ABC123abcabcあいうABC123abcあいうABC123abcあいう"
    Dim str2 As String = "abc"
    Debug.WriteLine((str1.Length - str1.Replace(str2, "").Length) \ str2.Length)  '結果  4
End Sub
 




2005/09/06


VBレスキュー(花ちゃん)
VB.NET2003  VB2005