DyadyaGenya
Знающий
- Сообщения
- 300
- Репутация
- 10
Доброго времени суток. Почему-то не срабатывает функция StringRegExpReplace. Сперва обрабатываю один массив, значения ячеек которого равны путь+дата+маска имени. В нем все отсекает, что нужно. Затем полученный массив обрабатывает повторно и уже не получается отсечь лишнее, тоесть путь. Даже если сперва попробовать отсечь путь, а потом уже конечный шаблон.
Частично проблему понял. Не срабатывает обратный слэш. Если в пути слэши "перекрыть" слэшем, вот так:
то все работает. Но я получаю путь в переменную уже со слэшами. И путь может меняться. Как быть?
В принципе решил, не знаю насколько правильно, но сделал замену:
Код:
#include <Date.au3>
#include <Array.au3>
#include <File.au3>
Global $MaskName = " маска шаблона"
Global $sPath = @DesktopDir & '\'
Global $aReturn[0]
_ArrayAdd($aReturn, $sPath & '01.12.2021' & $MaskName)
_ArrayAdd($aReturn, $sPath & '04.12.2021' & $MaskName)
_ArrayAdd($aReturn, $sPath & '05.12.2021' & $MaskName)
_ArrayAdd($aReturn, $sPath & '23.11.2021' & $MaskName)
_ArrayAdd($aReturn, $sPath & '28.11.2021' & $MaskName)
_ArrayAdd($aReturn, $sPath & '29.11.2021' & $MaskName)
_ArrayDisplay($aReturn, "Полученный массив")
; отсекаем все кроме даты, чтобы отсортировать по наиболее свежей дате
; Тут срабатывает StringRegExpReplace
Local $rowDataPath[0], $rowData[0]
For $i = 0 To UBound($aReturn)-1
_ArrayAdd($rowDataPath, StringRegExpReplace($aReturn[$i], $MaskName, "")) ; если тут заменить $MaskName на $sPath то не сработает
ConsoleWrite($rowDataPath[$i] & @CR)
Next
_ArrayDisplay($rowDataPath, "Оставшиеся Путь и дата")
ConsoleWrite($sPath & @CR)
ConsoleWrite("размер массива путей и дат = " & UBound($rowDataPath) & @CR)
; тут уже не срабатывает StringRegExpReplace
; отсекаем путь, оставляем дату
For $j = 0 To UBound($rowDataPath)-1
_ArrayAdd($rowData, StringRegExpReplace($rowDataPath[$j], $sPath, "")) ; если тут заменить $sPath на $MaskName то сработает
ConsoleWrite($rowData[$j] & @CR)
Next
_ArrayDisplay($rowData, "после отсечения пути")
Сообщение автоматически объединено:
Частично проблему понял. Не срабатывает обратный слэш. Если в пути слэши "перекрыть" слэшем, вот так:
Код:
C:\\Users\\user\\Desktop\\
то все работает. Но я получаю путь в переменную уже со слэшами. И путь может меняться. Как быть?
Сообщение автоматически объединено:
В принципе решил, не знаю насколько правильно, но сделал замену:
Код:
$doubleSlashes = StringReplace($sPath,"\","\\")
и потом
_ArrayAdd($rowData, StringRegExpReplace($rowDataPath[$j], $doubleSlashes, ""))
Последнее редактирование: