Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Anderis49
-46 / 37 / 6
Регистрация: 07.08.2013
Сообщений: 856
Записей в блоге: 1
1

Замена определённых слов в RichTextBox

20.09.2014, 14:07. Просмотров 771. Ответов 6
Метки нет (Все метки)

Как программно удалить\заменить слово из текста в ричтекстбоксе?

Код
vb.net
1
    RichTextBox1.Text = RichTextBox1.Text.Replace(txt, trt)
заменяет все слова в тексте, а нужно только одно слово из нескольких совпадающих.

Например:
в тексте встречается несколько раз слово "сегодня".
Нужно заменить третье "сегодня", на "вчера".

Добавлено через 2 часа 21 минуту
Нашел вот такой вариант
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
        If txt = "" Then txt = InputBox("Нужно вставить слово для поиска.", "Поиск слов в тексте.", "")
        If tst = "" Then tst = InputBox("Вставить слово для замены.", "Замена слов в тексте.", "")
        If InStr(Pozition, UCase(RichTextBox1.Text), UCase(Trim(txt))) <> 0 Then
            RichTextBox1.Focus() ' TextBox1 передаем фокус 
            RichTextBox1.SelectionStart = InStr(Pozition, UCase(RichTextBox1.Text), UCase(Trim(txt))) - 1 ' Устанавливаем позицию курсора перед найденным словом. Всё дело в том, что если в тексте было найденно искомое слово, то функция выдает позицию этого слова(т.е. количество символов перед искомым словом в тексте). 
            RichTextBox1.SelectionLength = Len(Trim(txt)) ' Выделяем найденное слово(выделение начинается с позиции курсора, и длится столько, сколько символов в слове)
            RichTextBox1.ScrollToCaret() ' Прокручиваем текст до выделенного слова
            RichTextBox1.SelectedText = ""
            RichTextBox1.SelectedText = tst  '  "Apples"
            RichTextBox1.SelectionColor = Color.Magenta
            Pozition = RichTextBox1.SelectionStart + Len(Trim(txt)) ' Переменная Pozition = позиции найденного слова, это для того чтобы одно слово не искалась по несколько раз 
            Button5.Text = "Next Change"
        Else ' Если ничего не найденно(или поиск закончен), то выдаем сообщение и устанавливаем значение переменных по умолчанию 
            Pozition = 1
            MsgBox("Замена слов завершена.", MsgBoxStyle.Information)
        End If
    End Sub
Может кому пригодиться или кто поправит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2014, 14:07
Ответы с готовыми решениями:

Как ограничить ввод определённых слов в TextBox?
Всем здравствуйте. Какое событие TextBox следует использовать для проверки...

RichTextBox. Изменения цвета текста выбранных слов
Доброе время суток)) Помогите пожалуйста с решением моей задачи.. И так вот...

Выделение отдельных слов в RichTextBox жирным шрифтом
Здравствуйте, уважаемые форумчане. Есть такая задача: в поле RichTextBox...

Нахождение выделенных цветом слов в RichTextBox или HTML
Привет всем! Подскажите, возможно ли как-то в RichTextBox находить слова,...

Как оптимизировать код поиска слов и их выделения цветом в RichTextBox
Написал код поиска слов и их выделения цветом в RichTextBox: ...

6
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
20.09.2014, 14:15 2
Прямой функции нет
запускай поиск слова в строке например через подсчитывай позицию вхождения и меняй один раз с найденной позиции
vb.net
1
2
3
4
5
Dim s As Integer = InStr(0, "Строка в которой ищем", "Строка что ищем", CompareMethod.Text) 'Первое вхождение
s = InStr(s, "Строка в которой ищем", "Строка что ищем", CompareMethod.Text) 'Второе вхождение
s = InStr(s, "Строка в которой ищем", "Строка что ищем", CompareMethod.Text) 'Третье вхождение
's позиция вхождения искомой строки
Dim res As String = Replace("Строка в которой ищем", "Cтрока в что ищем", "Строка на что меняем", s, 1)
0
Anderis49
-46 / 37 / 6
Регистрация: 07.08.2013
Сообщений: 856
Записей в блоге: 1
21.09.2014, 09:48  [ТС] 3
Цитата Сообщение от dimsaratov Посмотреть сообщение
Dim res As String = Replace(
Функция "Replace()" производит замену во всем тексте, а мне нужно только ОДНО(!) слово.
0
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
21.09.2014, 10:30 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

vb.net
1
Dim res As String=Replace ("Строка в которой ищем" , "Cтрока в что ищем" ,"Строка на что меняем" , 10, 1)
выполняет замену начиная с 10 символа в строке 1 раз
1
Anderis49
-46 / 37 / 6
Регистрация: 07.08.2013
Сообщений: 856
Записей в блоге: 1
21.09.2014, 15:47  [ТС] 5
Цитата Сообщение от dimsaratov Посмотреть сообщение
10, 1
Спасибо!

Вот этого я нигде не нашел.

Добавлено через 3 часа 9 минут
Поспешил сказать "спасибо".

dimsaratov, Ваш код действительно меняет слово, но при этом удаляет всё то, что стоит перед ним.

Попробуйте сами в предложении "Ваш код действительно меняет слово." заменить слово "меняет" на "удаляет" и вы получите "удаляет слово".
вместо "Ваш код действительно удаляет слово."
0
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
21.09.2014, 20:17 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

100% Рабочий код
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'RichTextBox1.Text = исходный текст
'TextBox1.Text = Что ищем
'TextBox2.Text = На что меняем
'RichTextBox2.Text=Результат
'NumericUpDown1.Value=Порядковый номер вхождения
 
Dim s As Integer = 1
Dim i As Integer
Dim flgRight As Boolean = False
For i = 1 To NumericUpDown1.Value
       s = InStr(s + 1, RichTextBox1.Text, TextBox1.Text, CompareMethod.Text)
       If i = NumericUpDown1.Value And s > 0 Then flgRight = True
Next
If flgRight = True Then
      RichTextBox2.Text = Strings.Left(RichTextBox1.Text, s - 1) & Replace(RichTextBox1.Text, TextBox1.Text, TextBox2.Text, s, 1)
End If
0
Anderis49
-46 / 37 / 6
Регистрация: 07.08.2013
Сообщений: 856
Записей в блоге: 1
22.09.2014, 11:38  [ТС] 7
Цитата Сообщение от dimsaratov Посмотреть сообщение
100% Рабочий код
Так-так, посмотрим https://www.dropbox.com/s/lrzbcmrcg9a3j25/rep1.avi?dl=0

Не объявлен NumericUpDown1.
Попытки объявить согласно рекомендациям MSDN ни к чему не привели.

Спасибо Вам за помощь, но по-моему с этим вопросом нужно завязывать - обойдусь тем кодом, что у меня есть.
0
Миниатюры
Замена определённых слов в RichTextBox  
22.09.2014, 11:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2014, 11:38

Замена слов в шаблоне договора Word
Вот код, мне нужно взять данные из textbox и внести их в уже готовый шаблон...

Замена запрещенных слов во введенной строке
Здравствуете! Помогите пожалуйста с задачей, что-то совершенно ничего у меня не...

RichTextBox ерунда в строках после вордИскажение форматирования при вставке текста в RichTextBox из MS Word
Суть в следующем: 1) Имеется статья формата doc (заголовки, абзацы, списки)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru