Dilocho
Dilocho

Reputation: 1

Selecting text in vb

I want to select a word to another word in a text box in vb.net with everything between them highlighted.

an example is

I went to the beach, had a pinic with my family and then went home at 6 o clock.

The starting word to be had and the end word being home and everything highlighted in between.

I have already used a little bit of code

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    Dim a As String
    Dim b As String
    a = TextBox2.Text 'means what ever is in textbox2 string to the location where "a" is
    b = InStr(RichTextBox1.Text, a)
    If b Then
        RichTextBox1.Focus()
        RichTextBox1.SelectionStart = b - 1
        RichTextBox1.SelectionLength = Len(a)

but its not exactly what i want it to do.

Addition to this was using RegEx Function as shown below

  'gets rid of the enter line break eg <enter> command no new lines
     Dim content As String = Replace(TextBox1.Text, Global.Microsoft.VisualBasic.ChrW(10), Nothing)
    'searches for this tag in the brackets between ".*" will be the contents
    Dim Regex As New Regex("<div.*class=""answer_text"".*id=editorText"".*""")
    'Show the string 
    For Each M As Match In Regex.Matches(content)
    'This will get the values, there are 3 atm meta.name des and content
    Dim Description As String = M.Value.Split("""").GetValue(3)
    'displays the content in the label
    TextBox3.Text = "" & Description
    Next

Upvotes: 0

Views: 5120

Answers (2)

ryrich
ryrich

Reputation: 2204

Here's a solution involving two TextBox controls:

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Dim a As String
        Dim b As String
        Dim index_a As Integer
        Dim index_b As Integer
        a = TextBox1.Text
        b = TextBox2.Text
        index_a = InStr(RichTextBox1.Text, a)
        index_b = InStr(RichTextBox1.Text, b)
        If index_a And index_b Then
            RichTextBox1.Focus()
            RichTextBox1.SelectionStart = index_a - 1
            RichTextBox1.SelectionLength = (index_b - index_a) + Len(b)
        End If
End Sub

TextBox1 contains the first word, TextBox2 contains the second word. When clicking the button, it will highlight from the first word to the end of the second word.

Upvotes: 0

VladL
VladL

Reputation: 13033

This will select everything between startWord and endWord excluding them both

Dim startWord As String = "had"
Dim endWord As String = "home"

Dim index As Integer = richTextBox1.Text.IndexOf(startWord)
richTextBox1.[Select](index + startWord.Length, richTextBox1.Text.IndexOf(endWord) - index - startWord.Length)

Upvotes: 1

Related Questions