amel27
Ты про то что в начале слешь остаётся? ну это так задуманно, но хотя да, нужно бы его убрать...
Цитата:
зачем дважды искать одно и тоже?.. (см. [6])
|
Ок, намёк понял

(см. ниже поправлены вариант)...
Цитата:
какие еще ты предполагал разделители кроме '\' ?
|
Ну вообще то я считал что символ
\ “позволяет” считать последующий после этого символ дословно, и если как разделитель будет задан один из служебных (для
StringRegExpReplace()) символов, то это позволит не считать символ как служебны - это не так?
Просто путь может быть и как ссылка, тогда разделитель будет другой.
Цитата:
знаком с "бритвой Оккама"?
|
Неа
Чтобы проверить весь массив на пренадлежность
НЕ замены, т.е если какой то элемент массива ровняется исходному пути, то я предполагаю что замена не осуществлялась, поэтому нужно опусташить этот элемент (это по мативам оригинальной функции
_PathSplit() 
).
Соответсвенно замечаниям немного переделал функцию

:
Код:

Func _PathSplitByRegExp($sPath, $pDelim="\")
Local $RetArray[8], $iArr
$pDelim = "\" & $pDelim
$RetArray[0] = $sPath
$RetArray[1] = StringRegExpReplace($sPath, $pDelim & '.*', $pDelim) ;Drive letter
$RetArray[2] = StringRegExpReplace($sPath, $pDelim & '[^' & $pDelim & ']*$', '') ;Path without FileName and extension
$RetArray[3] = StringRegExpReplace($sPath, '\.[^.]*$', '') ;Full path without File Extension
$RetArray[4] = StringRegExpReplace($sPath, '^.' & $pDelim & '*:.', '') ;Full path without drive letter
$RetArray[5] = StringRegExpReplace($sPath, '^.*' & $pDelim, '') ;FileName and extension
$RetArray[6] = StringRegExpReplace($RetArray[5], '\.[^.]*$', '') ;Just Filename
$RetArray[7] = StringRegExpReplace($sPath, '^.*\.', '') ;Just Extension of a file
;Проверяем все значения (элементы массива), если в каком то из них небыла произведена замена, то присваеваем ему пустое значение ("")
For $iArr = 1 To 7
If $RetArray[$iArr] = $sPath Then $RetArray[$iArr] = ""
Next
Return $RetArray
EndFunc