Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 13.10.2013
Сообщений: 14
1

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

13.10.2013, 14:31. Показов 1707. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Sub zamena()
Dim s, snew, c As String
Dim n, i As Integer
s = InputBox("введите строку")
n = Len(s)
snew = ""
For i = 1 To n
c = Mid(s, i, 1)
If (c = "*") Then c = "!"
snew = snew + c
Next i
MsgBox (snew)
End Sub

всё работает, но если изменить строчку, например If (c = "***") Then c = "!" замены не происходит. Такую программу можно сделать без replace?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2013, 14:31
Ответы с готовыми решениями:

Во введенной символьной строке группу символов заменить на другую группу символов
Задача : Во введенной символьной строке группу символов НН заменить на группу символов Нижний...

Заменить группу символов на заданный
Вот составил часть программы, но в ней заменяются любые ? на *, а мне нужно: Нужно заменить группу...

Заменить в строке C группу символов A на B
Помогите составить блок-схему по данному заданию: Есть строка C её вводит человек (ограничений по...

Заменить в строке в каждую группу символов a на b.
Как сделать данное задание: Дана строка символов и строки символов a и b. Заменить в строке в...

3
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
13.10.2013, 15:42 2
Без Replace можно сделать всё.

В приведённом коде группы символов равны по длине (=1), а для других случаев код придётся изменить.

Может, проще замену в Word использовать... Какова вообще наиболее обширная идея проекта?

Добавлено через 27 минут
Предлагаю, для развития темы, погонять следующий (практически ваш)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub zamena()
Dim s, snew, c, n, i 
    Do
    s = InputBox("введите строку")
    n = Len(s)
    if n = 0 then exit Do
    
        For i = 1 To n
            c = Mid(s, i, 1)
            If c = "*" Then c = "!"
            snew = snew + c
        Next
 
        MsgBox "Введённая строка:" & vbtab & s & vbCr & vbCr & _
        "Изменённая строка:" & vbtab & snew
    Loop 'цикл завершится, когда пользователь нажмёт Cancel (в InputBox) 
End Sub
Испытывал без VBA (на VBScript’е), поэтому объявление типов пришлось убрать.
Изображения
 
1
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
13.10.2013, 15:52 3
Попробуй так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub zamena()
    Dim s$, snew$
    Dim n, i As Integer
    s = "Привет папаша***" 'InputBox("введите строку")
    snew = MyReplace(s, "***", "!")
    MsgBox (snew)
End Sub
 
Function MyReplace$(stroka$, WhatZam$, ZamNa$)
    Dim n As Double
    Do
        n = InStr(n + IIf(n = 0, 1, Len(ZamNa)-1), stroka$, WhatZam)
        If n <> 0 Then
            stroka = Mid(stroka, 1, n - 1) & ZamNa & Mid(stroka, n + Len(WhatZam))
        Else
            Exit Do
        End If
    Loop
    MyReplace = stroka
End Function
1
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
14.10.2013, 16:48 4
Лучший ответ Сообщение было отмечено как решение

Решение

Есть еще короче функция с использованием массива:
Visual Basic
1
2
3
Function MyReplace$(stroka$, WhatZam$, ZamNa$)
    MyReplace = Join(Split(stroka, WhatZam), ZamNa)
End Function
1
14.10.2013, 16:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2013, 16:48
Помогаю со студенческими работами здесь

Заменить в строке группу символов bad на good
Битовые операции + pchar дана строка символов длинною n. требуется заменить в ней группу символов...

В строке каждую группу рядом стоящих символов "+" заменить одним таким символом
В строке каждую группу рядом стоящих символов &quot;+&quot; заменить одним таким символом.

Каждую группу символов one заменить на three
Каждую группу символов one заменить на three. Попробовал написать, пока что использовал точку а...

Найти во введенной строке текста некоторую последовательность символов и заменить её иной последовательностью символов
Найти во введенной строке текста некоторую последовательность символов и заменить её иной...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru