Итак, у меня есть консольная программа VB.NET, где пользователь может ввести предложение, предложение затем разбивается на каждое слово и задается стоимость. Затем программа проверяет любые повторяющиеся слова и добавляет позицию, в которой повторяющиеся слова появляются с первой.VB.NET: Декомпрессия/Реформирование предложения из текстового файла EDIT: w/code
Например (как я понимаю, что не может быть хорошо объяснено): - входы пользователя «Привет, меня зовут привет» - Программа расщепляется предложения и присваивает значения, как, например: «Привет 1, мой 2, имя 3 , 4, привет 5 "(каждая пара слов и чисел находится в массивах) - Программа обнаруживает повторяющиеся слова и добавляет номера в первую очередь:« привет 1 5, мое 2, имя 3, 4 » - Слова и номера записываются в текстовый файл
Теперь слова необходимо прочитать из текстового файла. Я использую функции LineInput (1)/File Open для чтения из текстового файла и разделения каждой строки текстового файла на пробел, так что числа и слова являются отдельными. Однако при печати слов в консоль в качестве предложения слова с дубликатами появляются только один раз, поскольку они появляются только один раз в текстовом файле, но с двумя номерами.
Я понимаю проблему, но возникли проблемы с поиском способа ее исправления, хотя может быть просто, что мне нужно записать в текстовый файл другим способом/форматом. Был бы действительно благодарен всем, кто мог бы помочь/дать мне советы.
Module Module1
Dim i As Integer = 0
Dim textInput As String
Dim finalTextInput(1) As String
Sub Main()
Console.WriteLine("Please enter your sentence(s)")
Dim sentence As String = Console.ReadLine()
Dim sentenceSplit() As String = sentence.Split(" ")
For Each element In sentenceSplit
sentenceSplit(i) = element & " " & i
i += 1
Next
Dim output As New Dictionary(Of String, String)
For Each current In sentenceSplit
' split current input
Dim currentSplited = current.Split(" ")
Dim word = currentSplited(0)
Dim trailingNumbers = currentSplited(1)
' if it already exists
If output.ContainsKey(word) Then
' add trailing numbers
output(word) = output(word) & " " & trailingNumbers
Else
' new input
output.Add(word, trailingNumbers)
End If
Next
' create new array from dictionary
Dim newArray = output.Select(Function(x) x.Key & " " & x.Value).ToArray()
FileOpen(1, "compressed.txt", OpenMode.Output)
For Each element In newArray
PrintLine(1, element)
Next
FileClose(1)
Read()
End Sub
Sub Read()
Console.WriteLine("Would you like to decompress your sentences? Y/N")
Dim input As String = Console.ReadLine()
If input.ToLower() = "y" Then
FileOpen(1, "compressed.txt", OpenMode.Input)
Do Until EOF(1)
textInput = LineInput(1)
finalTextInput = textInput.Split(" ")
Console.Write(finalTextInput(0) & " ")
Loop
FileClose(1)
ElseIf input.Tolower() = "n" Then
Console.WriteLine("Thank you for using our system")
Threading.Thread.Sleep(2000)
End
Else
Console.WriteLine("Please choose one of the options")
Threading.Thread.Sleep(1500)
Console.Clear()
Read()
End If
Console.ReadKey()
End Sub
End Module
Если вам нужна помощь в отладке кода, вероятно, вы должны включить свой код в вопрос. – Mark
@Mark Хорошо, что я обычно делаю, но я думал, что этого объяснения было достаточно, поскольку я знаю, в чем проблема, просто нужно исправить –