Помогите пожалуйста. Туплю что-то.
Есть строка, записанная в переменную. Нужно найти в ней строки, содержащие подстроки что хранятся в отдельном массиве и заменить на что-то другое. Вот что написал:
В-общем, похоже, переменная $pattern не раскрывается в предпоследней команде. Где ошибка?
На всякий случай - результат должен быть такой:
Есть строка, записанная в переменную. Нужно найти в ней строки, содержащие подстроки что хранятся в отдельном массиве и заменить на что-то другое. Вот что написал:
Код:
#include <Array.au3>
$string = 'строка 1' &@CRLF& _
'строка 2' &@CRLF& _
'строка 3' &@CRLF& _
'граница 1' &@CRLF& _
'строка 4' &@CRLF& _
'строка 5' &@CRLF& _
'граница 2' &@CRLF& _
'строка 6' &@CRLF& _
'строка 7' &@CRLF& _
'граница 2-----------------------------' &@CRLF& _
'строка 8' &@CRLF& _
'строка 9' &@CRLF& _
'граница 2--' &@CRLF& _
'граница 1' &@CRLF& _
'строка 10' &@CRLF& _
'строка 11' &@CRLF& _
'граница 1' &@CRLF& _
'строка 12' &@CRLF& _
'строка 13' &@CRLF& _
'граница 1--'
Dim $aboundaries[2] = ["граница 1", "граница 2"] ; объявляем подстроки
;~ _ArrayDisplay ($aboundaries)
;~ ConsoleWrite ($string & @CRLF)
;~ ConsoleWrite ("________________" & @CRLF)
; Формируем шаблон
$pattern = "'"
For $y = 0 To UBound ($aboundaries) - 1
$pattern &= $aboundaries[$y] & "-*|"
Next
$pattern = StringTrimRight ($pattern, 1)
$pattern &= "'"
ConsoleWrite ($pattern & @CRLF) ; с шаблоном всё в порядке, если скопировать вывод этой команды из консоли и вставить вместо $pattern в следующей команде, то всё отработает как надо
$string = StringRegExpReplace ($string, $pattern, 'ggg') ; :( не заменяет в таком виде, а так: $string = StringRegExpReplace ($string, 'граница 1-*|граница 2-*', 'ggg') - работает
ConsoleWrite ($string & @CRLF)
В-общем, похоже, переменная $pattern не раскрывается в предпоследней команде. Где ошибка?
На всякий случай - результат должен быть такой:
Код:
строка 1
строка 2
строка 3
ggg
строка 4
строка 5
ggg
строка 6
строка 7
ggg
строка 8
строка 9
ggg
ggg
строка 10
строка 11
ggg
строка 12
строка 13
ggg