Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 28
1

Во всем заданном тексте заменить одно слово другим

09.06.2012, 16:56. Показов 3733. Ответов 15
Метки нет (Все метки)

Вот две задачки,что-то вникнуть не могу,вроде что-то собрал но никак..
Вот первая:
1)Во всем заданном тексте заменить одно слово другим(длины этих слов могут совпадать)
А вот вторая :
2)Зашифровать заданный текст,используя перемешанный алфавит(полученный перестановкой перестановкой всех букв исходного алфавита)
АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ
ЕЖЧБПКЛАОТДУГЦЯЙХЫВЪЮИФСЩНЬЭЗШРМ

Вот по первой что-то есть может и правильно:
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub cmdZamena_Click()
Dim poz As Integer, stroka As String, dli As Integer, poz2 As Integer, dli2 As Integer
poz = InStr(1, txt3.Text, txt1.Text)
dli = Len(txt3.Text) - poz
poz2 = InStr(poz, txt3.Text, " ")
dli2 = Len(txt3.Text) - poz2
stroka = Mid(txt3.Text, 1, poz - 2) & " " & txt2.Text & " " & Mid(txt3.Text, poz2, dli2 + 1)
txt3 = stroka
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2012, 16:56
Ответы с готовыми решениями:

Дан текст, а также 2 слова. Заменить встречающееся в тексте слово 1 на слово 2
Подскажите пожалуйста, как написать программу в visual basic 6.0, если: Дан текст, а также 2...

Обработка текстовой информации. - Дан текст. Заменить в тексте ЗАДАННОЕ(1) слово на ЗАДАННОЕ(2) слово
Задание: Дан текст. Заменить в тексте ЗАДАННОЕ(1) слово на ЗАДАННОЕ(2) слово. В ниже...

Заменить в тексте одно слово другим
Как заменить одно слово на другое, если их длины разные? Пример слово "Груша" на "Абрикос"

как можно одно слово в тексте заменить другим с использованием строк
как можно одно слово в тексте заменить другим с использованием строк....например слово машина,...

__________________
15
es geht mir gut
11226 / 4703 / 1178
Регистрация: 27.07.2011
Сообщений: 11,426
09.06.2012, 17:09 2
c0nfy,

Функция Replace
Visual Basic
1
Replace(Expression,Find,Replace[,Start[,Count[,Compare]]])
Новая функция,которая появилась в Visual Basic 6.0

Возвращаемое значение
В результате действия функции Replace возвращается исходная строка с замененным строковым фрагментом

Параметры

Expression
Обязательный аргумент - строка, в которой требуется замена
Find
Обязательный аргумент - подстрока, которую нужно заменить
Replace
Обязательный аргумент - подстрока замены
Start
Необязательный аргумент - указывает позицию
Count
Необязательный аргумент - указывает число
Compare
Необязательный аргумент - вид сравнения
Пример
Visual Basic
1
2
3
4
5
6
7
' меняем слово "хочу" на "люблю"  во всём тексте
Dim sample$, findstr$, newstr$,retval$
sample = "Я хочу, хочу, хочу тебя" 'строка,которую будем менять
findstr = "хочу" 'подстрока для замены
newstr = "люблю" ' новая подстрока для  замены
retval = Replace (sample,findstr,newstr) 
Debug.Print retval
0
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 28
09.06.2012, 17:17  [ТС] 3
Спасибо,но мой код отредактировать не получится никак?Просто по этой работе мне ещё защищаться...А с вашим вариантом я знаком вообще никак...
0
es geht mir gut
11226 / 4703 / 1178
Регистрация: 27.07.2011
Сообщений: 11,426
09.06.2012, 17:35 4
По второму вопросу похожая тема.

Добавлено через 11 минут
Цитата Сообщение от c0nfy Посмотреть сообщение
мой код отредактировать не получится никак?
Visual Basic
1
2
3
4
5
'В тексте, находящимся в txt3  меняется слово
' из txt2 на слово из txt1
Private Sub cmdZamena_Click()
   txt3.Text = Replace(txt3.Text, txt2.Text, txt1.Text)
End Sub
1
Эксперт WindowsАвтор FAQ
17605 / 7448 / 884
Регистрация: 25.12.2011
Сообщений: 11,236
Записей в блоге: 16
12.06.2012, 01:26 5
1) на обычных MID-ax, INSTR-ах:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Option Explicit
 
Sub Zamena()
Dim Poz As Integer, Stroka As String, What As String, Repl As String
Stroka = "Казнить нельзя помиловать!" 'исходная
What = "нельзя" 'что заменяем
Repl = "нужно, не" 'чем заменяем
Do
  Poz = Poz + 1
  Poz = InStr(Poz, Stroka, What, vbTextCompare)
  If Poz <> 0 Then Stroka = Left$(Stroka, Poz - 1) & Repl & Mid$(Stroka, Poz + Len(What)): Poz = Poz + Len(Repl) - 1
Loop Until Poz = 0
End Sub
Текст из текстбоксов, думаю, сами назад прикрутите.
0
dev.Free
12.06.2012, 07:42
  #6

Не по теме:

Согласна информации взятой из лукоморья "Private Sub cmdZamena_Click()" это, а конкретно cmdZamena_Click признак быдлокодерства, любителя писать латиницей по русски, да и вообще писать так, что можно голову сломать при попытке что-то понять, так же варианты "Dim Sprosit_Polzovetelya" :)

1
SoftIce
12.06.2012, 08:40
  #7

Не по теме:

inv.DS, злой Вы по утрам:D

0
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 28
21.06.2012, 18:38  [ТС] 8
Цитата Сообщение от Diskretor Посмотреть сообщение
Текст из текстбоксов, думаю, сами назад прикрутите.
А вы не могли бы мне сами прикрутить...А если можно готовую работу прислать.


Добавлено через 9 минут
Цитата Сообщение от inv.DS Посмотреть сообщение
Не по теме:
Согласна информации взятой из лукоморья "Private Sub cmdZamena_Click()" это, а конкретно cmdZamena_Click признак быдлокодерства, любителя писать латиницей по русски, да и вообще писать так, что можно голову сломать при попытке что-то понять, так же варианты "Dim Sprosit_Polzovetelya"
прости конечно,но нас так учил препод)))
0
3 / 3 / 1
Регистрация: 21.06.2012
Сообщений: 124
21.06.2012, 23:49 9
Вот код готовой программы. Если конечно я правильно понял вашу проблему. В первый тексь-бокс вводиться исходный текст во воторой текст-бокс вводиться какой текст нужно найти а в третий на что заменить.
Если что то не понятно или нужны исходники пишите ICQ 643808306 или net-09@list.ru
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Option Explicit
 
Private Sub Command1_Click()
Dim s As String
Dim s1 As String
Dim s2 As String
Dim i As Single
Dim x() As String
Dim y() As String
Dim z() As String
s = CStr(Text1.Text)
s1 = CStr(Text2.Text)
s2 = CStr(Text3.Text)
x = Split(s1, " ")
y = Split(s2, " ")
z = Split(s, " ")
 
For i = 1 To Len(s)
s = Replace(s, s1, s2)
Next i
 
Text1.Text = s
End Sub
 
 
Private Sub Command2_Click()
End
End Sub
1
Эксперт WindowsАвтор FAQ
17605 / 7448 / 884
Регистрация: 25.12.2011
Сообщений: 11,236
Записей в блоге: 16
22.06.2012, 01:35 10
Цитата Сообщение от c0nfy Посмотреть сообщение
А вы не могли бы мне сами прикрутить...А если можно готовую работу прислать.
Нет.

Подсказка:

Цитата Сообщение от Diskretor Посмотреть сообщение
Sub Zamena()
меняем на
Цитата Сообщение от c0nfy Посмотреть сообщение
Private Sub cmdZamena_Click()
Остальное где-то так:
Цитата Сообщение от Diskretor Посмотреть сообщение
Stroka = "Казнить нельзя помиловать!" 'исходная
What = 'что заменяем
Repl = "зачем" 'чем заменяем
Stroka = txt3.Text 'исходная
What = txt1.Text 'что заменяем
Repl = txt2.Text 'чем заменяем
1
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 28
22.06.2012, 20:49  [ТС] 11
Diskretor, не работает...
0
Эксперт WindowsАвтор FAQ
17605 / 7448 / 884
Регистрация: 25.12.2011
Сообщений: 11,236
Записей в блоге: 16
22.06.2012, 21:54 12
Я не провидец. Нужен файл, где проводятся тесты.
Аттачте сюда через расширенный режим - скрепку.

Если не работает, значит расстановка переменных в посте № 1 тоже неправильная.
0
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 28
22.06.2012, 23:03  [ТС] 13
Вот может чем то поможет..
0
Вложения
Тип файла: zip лаба5.zip (1.5 Кб, 10 просмотров)
Эксперт WindowsАвтор FAQ
17605 / 7448 / 884
Регистрация: 25.12.2011
Сообщений: 11,236
Записей в блоге: 16
22.06.2012, 23:28 14
У Вас третий текстбокс создан каким то уникальным способом (так и не разобрался - посмотрите на первую строку браузера объектов при его выделении и сравните со значением Name - какая-то группировка что-ли).
В идеале его пересоздать.
Ну а при вставке кода Вы не указали программе, что замененное значение еще и нужно куда то ведь вывести (наверно вместо текста того же тест.бокса № 3).
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub cmdZamena_Click()
Dim Poz As Integer, Stroka As String, What As String, Repl As String
Stroka = txt3(1).Text 'исходная
What = txt1.Text 'что заменяем
Repl = txt2.Text 'чем заменяем
Do
  Poz = Poz + 1
  Poz = InStr(Poz, Stroka, What, vbTextCompare)
  If Poz <> 0 Then Stroka = Left$(Stroka, Poz - 1) & Repl & Mid$(Stroka, Poz + Len(What)): Poz = Poz + Len(Repl) - 1
Loop Until Poz = 0
txt3(1).Text = Stroka
End Sub
1
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 28
23.06.2012, 00:58  [ТС] 15
всё,спасибо большое!
0
es geht mir gut
11226 / 4703 / 1178
Регистрация: 27.07.2011
Сообщений: 11,426
23.06.2012, 07:51 16
Цитата Сообщение от Diskretor Посмотреть сообщение
У Вас третий текстбокс создан каким то уникальным способом (так и не разобрался

Да индекс у него стоит 1. Убрать индекс, и можно будет писать
Visual Basic
1
 txt3.Text
вместо
Visual Basic
1
txt3(1).Text
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2012, 07:51

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

В тексте одно введённое слово заменить другим словом, которое также вводится с экрана
Помогите переделать программу под файл. Задание вот какое : &quot;В тексте одно введённое слово заменить...

В тексте одно введённое слово заменить другим словом, которое также вводится с экрана
помогите пожалуйста с лабой, срок поджимает, а идей никаких((( 1. В тексте одно введённое слово...

Заменить одно слово другим
Привет, Как заменить одно слово другим в string, учитывая что все слова вводятся юзером...

Заменить одно слово другим в строке
Всем доброго времени суток! столкнулся с такой задачей - заменить одно слово другим, а как это...


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

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

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