как сделать replace и задать длину VBA

программирование VBA

Добрый день.
Прошу помочь разобраться с функцией replace (VBA)
Задача:
Отрыть текстовый файл найти там все IP диапазона "192.168.*.???" и заменить на "IPADRS"
s = replace(s, "192.168.*.???", "IPADRS") - не работает.

Sub zamena_simvolov()
'(ByVal filename As String)
Dim s As String, v As Variant, i As Long, l As Long
filename = "E:\Test In\1.txt"
Open filename For Input As #1: s = Input(LOF(1), 1): Close #1
v = Split(s, vbCrLf)
Open filename For Output As #1
For i = 0 To UBound(v) - 1
s = v(i)
s = Replace(s, "192.???", "ipadress ")
Print #1, s
Next
Close #1
End Sub
Ответы:
Как я понимаю, в адресе * означает любой набор цифр, а ? любую одну цифру.
Функция Replace не работает, потому что она ищет * и ?, которых там нет, а вместо них цифры.
Что там может быть, мы не знаем, зато знаем возможную длину этой строки.
"192.168.?.???" - 13 знаков, "192.168.??.???" - 14 знаков, "192.168.???.???" - 15 знаков,
в зависимости от того, одна, две или три цифры могут быть под *.
Попробуй так
Dim s As String, v As Variant, i As Long, l As Long, Poz1 As Integer, Poz2 As Integer
.... ' тут ты открываешь файлы и читаешь данные, здесь все правильно.
For i = 0 To UBound(v) - 1
   s = v(i)
   Poz1 = InStr(1, s, "192.168.", vbTextCompare)
   If Poz1 > 0 Then Poz2 = InStr(Poz1+9, s, ".", vbTextCompare)
   If Poz2 = Poz1 + 10 Then
       s = Left$(s, Poz1 - 1) + "ipaddress" + Mid$(s, Poz1 + 14) ' если под * 1 цифра
   ElseIf Poz2 = Poz1 + 11 Then
       s = Left$(s, Poz1 - 1) + "ipaddress" + Mid$(s, Poz1 + 15) ' если под * 2 цифры
   ElseIf Poz2 = Poz1 + 12 Then
       s = Left$(s, Poz1 - 1) + "ipaddress" + Mid$(s, Poz1 + 16) ' если под * 3 цифры
   End If
    Print #1, s
Next


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.