Как выполнить поиск по строке и динамически заменить определенные слова?
Я работаю над заменой слов в тексте, прежде чем показывать весь текст в richtextbox. Проблема, с которой я сталкиваюсь, заключается в том, что код, похоже, повторяется через цикл, а не массовая замена текста.
вот мой код:
путь к текстовому файлу строка подключения
sql-соединение с использованием select * для заполнения таблицы datata(repdt)
For Each textpath As String In Files.FileNames RichTextBox1.Clear() Dim newline = String.Empty Dim regstr = String.Empty For I As Integer = 0 To repdt.Rows.Count - 1 For Each line As String In File.ReadLines(textpath) If line.Contains(repdt.Rows(I).Item("originaltext").ToString) Then newline = line.Replace(repdt.Rows(I).Item("originaltext"), repdt.Rows(I).Item("replacementtext")) regstr = String.Join(Environment.NewLine, line.Split(New Char() {ControlChars.Lf}, StringSplitOptions.RemoveEmptyEntries)).Replace(vbTab, "") RichTextBox1.Text += newline + Environment.NewLine End If Next Next
Я пытаюсь превратить это в библиотеку или текст для замены.
Что я уже пробовал:
Изначально я использовал это:
For Each textpath As String In Files.FileNames RichTextBox1.Clear() Dim regstr As String = String.Join(Environment.NewLine, System.IO.File.ReadAllText(textpath).Split(New Char() {ControlChars.Lf}, StringSplitOptions.RemoveEmptyEntries)) Dim replacestr As String = regstr.Replace("text", "text").Replace("text", "text").Replace("text", "text"). 'etc RichTextBox1.Text = replacestr Next
однако это требует кодирования каждый раз, когда я хочу что-то заменить.
Ralf Meier
Откуда берутся детали для замены струн ?
Если вы хотите иметь библиотечный метод-как вы хотите сказать ему, что он должен делать ?
Member 11856456
он сравнивает то, что у меня есть в моей таблице данных, со строками документа. Что я хотел бы сделать, так это иметь способ использовать информацию базы данных и заполнить ее методом .replace.
Я просто не знаю, как сделать так, чтобы код выглядел так:
regstr.Replace("текст", "текст").Заменить("текст", "текст").Заменить("текст", "текст"). - и так далее
где он автоматически добавит .Replace("text", "text") для каждой записи datatable, которая соответствует.
Ralf Meier
Я понимаю...
Я предлагаю следующее : Вы создаете метод (функцию), которому даете исходную строку, а также замены (например, в виде списка или массива).
Внутри вашего метода вы ищете размер массива (его длину) , перебираете его и выполняете замену элемент за элементом.
Если вы создадите комбинированную команду, как в вашем примере кода (replacestr = regstr.Replace("text", "text").Заменить("текст", "текст").Replace("text", "text")) он также будет делать замены шаг за шагом (но в данном случае по заказу компилятора).