Visual Basic Noob Visual Basic Noob - 1 month ago 8
Vb.net Question

Program that identifies words in a sentence, stores these in a list and replaces each word with the position of that word in the list

I have created a form visual basic program that ouputs the position of a word in a sentence, is there a way that i could output the whole sentence with only numbers for example: The cat fought another cat would be 1,2,3,4,1,6,7.

Really appreciate all of your help.

Answer

All you need to do is get a list of the distinct words in the sentence, then iterate through each word of the sentence and substitute the word's index for the word as an output. Here's an example of how to accomplish that:

    Dim UserInput1 As String = "The cat fought another cat would be"
    Dim words As New List(Of String)

    'Here, we just add get a list of the distinct words in the sentence
    For Each Word As String In UserInput1.ToLower.Split(CChar(" "))
        If Not words.Contains(Word) Then words.Add(Word)
    Next

    'Looping through the words and their indexes
    'to show their relation just for this example
    For i As Integer = 0 To Words.Count - 1
        Debug.Print((i + 1).ToString & " = " & Words(i))
    Next
    'Outputs:
    '1 = the
    '2 = cat
    '3 = fought
    '4 = another
    '5 = would
    '6 = be


    'So now that we have our number/word relations,
    'we can just loop through the words and get the
    'output that you wanted, an index substitution of each word
    Dim output As String = Nothing
    For Each Word As String In UserInput1.ToLower.Split(CChar(" "))
        output &= (words.IndexOf(Word) + 1).ToString & ", "
    Next
    output = output.Substring(0, output.Length - 2)
    'output = "1, 2, 3, 4, 2, 5, 6"
Comments