shaileshshinde Ответов: 1

Показать текущее и предыдущее слово из строки текстового поля


у меня есть линия предположим:

abcde 12385 8755 87878988 dsfgfgfdg
12345 211323 fgfgfdgf 544555 dfghghh weewrerr opopppiopoi weewrewrwe
АБВ
587964

а когда "текущее слово" отображается в одном текстовом поле 3, то "предыдущее слово" должно отображаться в textbox4, а "следующее слово" из строки должно отображаться в textbox5

Что я уже пробовал:

Из-за приведенного ниже рабочего кода я могу получить только текущее слово.

Dim somestring2() как строка
somestring2 = RichTextBox2.Text.Split(" ")
Дим Ш Как Новый Мб.ShowMessagebox
Для i = 0 до somestring2.Длина - 1


textbox3 и.Текст = somestring2(я)


Ш. Шоубокс(somestring2(я), Мб.Сайт mstyle.ОК, Мб.FStyle.Ключи, "Окно Одного Слова")

Следующий

есть ли какое-то решение для этого?

Maciej Los

Насколько я вижу, только одна строка с 4 "словами" в ней.

shaileshshinde

код richtextboxlineupanddown был задан вами.но теперь мне удалось разделить слова и показать их как в messagebox, так и в textbox.

но теперь я хочу, чтобы следующее слово и предыдущее слово отображались в разных текстовых полях.

не получая идеи для этого метода, чтобы показать следующее и предыдущее слово в разных текстовых полях.

shaileshshinde

любое решение для моего вышеуказанного запроса?

shaileshshinde

не могли бы вы помочь мне с этим решением?

1 Ответов

Рейтинг:
2

Maciej Los

Пожалуйста, сначала прочтите мой комментарий к этому вопросу.

Проверить это:

Dim singleline As String = "abcde 12345 xyz 587964"
Dim words As String() = singleline.Split(New String(){" "}, StringSplitOptions.RemoveEmptyEntries)

For Each word As String In words
	Console.WriteLine(word)
Next


Результат:
abcde
12345
xyz
587964


[РЕДАКТИРОВАТЬ]

Если вы хотите получить следующее/предыдущее слово, вы должны написать метод, похожий на SelectLine предоставлено мной в этом решении: Перейти к следующей & задней строке в richtextbox с помощью нажатия кнопки[^]


[Правка#2]

В верхней части модуля Form1:
Dim currentword As Integer = 0

Public Enum Direction
    Up = -1
    Down = 1
End Enum


События для кнопок next/previous:
Private Sub BtnNextWord_Click(sender As Object, e As EventArgs) Handles BtnNextWord.Click
    DisplayWords(Direction.Down)
End Sub

Private Sub BtnPrevWord_Click(sender As Object, e As EventArgs) Handles BtnPrevWord.Click
    DisplayWords(Direction.Up)
End Sub


Процедура отображения слов:
Private Sub DisplayWords(direction As Direction)
    Dim words As String() = Me.RichTextBox1.Lines _
                            .SelectMany(Function(line) line.Split(New String() {" "}, StringSplitOptions.RemoveEmptyEntries)) _
                            .ToArray()

    Me.TxtCurrentWord.Text = words(currentword)
    Me.TxtPreviousWord.Text = If(currentword > 0, words(currentword - 1), Nothing)
    Me.TxtNextWord.Text = If(currentword < words.Count - 1, words(currentword + 1), Nothing)

    currentword += direction
    If currentword < 0 Then currentword = 0
    If currentword > words.Count - 1 Then currentword = words.Count - 1

End Sub


shaileshshinde

@Мачей не становится от этого метода.

Maciej Los

Проверьте обновленный ответ.

shaileshshinde

Ты превосходен, Мацей.

shaileshshinde

Но у меня есть еще один запрос относительно этого метода и другого кода richboxlineupdown, данного вами.
Как будет выглядеть окончательный файл saved.as я проверил для lineupdown я видел, что только одна строка сохраняется и гуглится также.я не получил логики для сохранения lineupdown и этого wordupdown как один текстовый/doc файл в порядке, как они были в исходном текстовом/word файле

Maciej Los

Это должно быть что-то вроде этого.:
Файл.WriteAllLines("C:\rtb.txt", RichTextBox1.Lines)

shaileshshinde

я попробовал ниже код:
Dim saveMe как новый SaveFileDialog()
saveMe.Filter = "текстовые документы(*.txt)|*.txt"
Если saveMe.ShowDialog() = Windows.Формы.свойство DialogResult.Тогда ладно
'RichTextBox2.SaveFile(saveMe.FileName, RichTextBoxStreamType.открытый текст)
Файл.WriteAllLines(saveMe.FileName, DotPadTextBox.Lines)
MsgBox("файл сохранен как :" + saveMe.FileName)
Еще
MsgBox("не удалось подобрать файл для сохранения как")
Конец, Если

Примечание:- Dotpaddextbox-это richtextbox, который сначала открывает файл и
RichTextBox2-это текстовое поле, которое показывает одну строку текстового файла в соответствии с вашим кодом.


когда мы редактируем одну строку файла из RichTextBox2, то эта строка должна быть сохранена вместо более ранней неправильной строки в том же текстовом файле, где существует другая строка.

значит, не только одна строчка.нужно, чтобы вся строка была сохранена, но только отредактированная строка должна быть заменена в файле.

shaileshshinde

любое решение для этого:
я попробовал ниже код:
Dim saveMe как новый SaveFileDialog()
saveMe.Filter = "текстовые документы(*.txt)|*.txt"
Если saveMe.ShowDialog() = Windows.Формы.свойство DialogResult.Тогда ладно
'RichTextBox2.SaveFile(saveMe.FileName, RichTextBoxStreamType.открытый текст)
Файл.WriteAllLines(saveMe.FileName, DotPadTextBox.Lines)
MsgBox("файл сохранен как :" + saveMe.FileName)
Еще
MsgBox("не удалось подобрать файл для сохранения как")
Конец, Если

Примечание:- Dotpaddextbox-это richtextbox, который сначала открывает файл и
RichTextBox2-это текстовое поле, которое показывает одну строку текстового файла в соответствии с вашим кодом.


когда мы редактируем одну строку файла из RichTextBox2, то эта строка должна быть сохранена вместо более ранней неправильной строки в том же текстовом файле, где существует другая строка.

значит, не только одна строчка.нужно, чтобы вся строка была сохранена, но только отредактированная строка должна быть заменена в файле.

Maciej Los

Таким образом, вы должны заменить строку, которая приходит из текстового поля, на строку в richtextbox, а затем сохранить все строки richtextbox.

Обратите внимание, что я решил вашу первоначальную проблему. Было бы хорошо увидеть мое решение в качестве ответа. Ваши дальнейшие требования не относятся к первоначальному вопросу.

shaileshshinde

ОК