Форум » Clipper » Подскажите как получить месяц из имени файла.. » Ответить

Подскажите как получить месяц из имени файла..

Andrey: Есть массив файлов типа: железнодорожный102009.dbf кировский102009.dbf ленинский102009.dbf ленинский52009.dbf октябрьский102009.dbf свердловский102009.dbf советский102009.dbf центральный012009.dbf центральный112009.dbf центральный12009.dbf центральный52009.dbf центральный.dbf советский.dbf Как выделить месяц из имени файла ?

Ответов - 5

КСС: Не понятен формат записи даты.

Andrey: КСС пишет: Не понятен формат записи даты. Как обычно.... Если было бы одинаково, то не спрашивал бы.

gustow: а если что-то типа? [pre2]function MesFromFile( c ) // к примеру, c:="советский052009.dbf" Local cTmp cTmp:=c if at("2009.dbf", cTmp)=0 Return 0 endif cTmp:=strtran(cTmp, "2009.dbf", "") if .not.IsDigit(right(cTmp,1)) Return 0 else if .not.IsDigit(right(cTmp,2)) Return val(right(cTmp,1)) else Return val(right(cTmp,2)) endif endif Return 0 [/pre2]


Andrey: gustow пишет: а если что-то типа? Спасибо большое за идею !!! Сделал и на другие года... FUNCTION MAIN() LOCAL aFile := { }, nI, cFile AAdd( aFile, "железнодорожный102009.dbf" ) AAdd( aFile, "кировский102009.dbf" ) AAdd( aFile, "ленинский102009.dbf" ) AAdd( aFile, "ленинский52009.dbf" ) AAdd( aFile, "октябрьский102009.dbf" ) AAdd( aFile, "свердловский102009.dbf" ) AAdd( aFile, "советский102009.dbf" ) AAdd( aFile, "центральный012009.dbf" ) AAdd( aFile, "центральный112009.dbf" ) AAdd( aFile, "центральный12009.dbf" ) AAdd( aFile, "центральный52009.dbf" ) AAdd( aFile, "центральный.dbf" ) AAdd( aFile, "советский.dbf" ) AAdd( aFile, "советский012010.dbf" ) FOR nI := 1 TO Len( aFile ) ? nI, " - ", aFile[ nI ], ", ", MesFromFile( aFile[ nI ] ) NEXT wait RETURN NIL FUNCTION MesFromFile( c ) LOCAL cTmp, cYear cTmp := c cYear := SUBSTR(c,RAT(".",c)-4,4)+SUBSTR(c,AT(".",c)) IF At( cYear, cTmp ) = 0 RETURN 0 ENDIF cTmp := StrTran( cTmp, cYear, "" ) IF .not.IsDigit( Right( cTmp, 1 ) ) RETURN 0 ELSE IF .not.IsDigit( Right( cTmp, 2 ) ) RETURN Val( Right( cTmp, 1 ) ) ELSE RETURN Val( Right( cTmp, 2 ) ) ENDIF ENDIF RETURN 0

sergey5703: // Программа ? "month='" + Extract_Month("железнодорожный102009.dbf") + "'" ? "month='" + Extract_Month("кировский102009.dbf") + "'" ? "month='" + Extract_Month("ленинский102009.dbf") + "'" ? "month='" + Extract_Month("ленинский52009.dbf") + "'" ? "month='" + Extract_Month("октябрьский102009.dbf") + "'" ? "month='" + Extract_Month("свердловский102009.dbf") + "'" ? "month='" + Extract_Month("советский102009.dbf") + "'" ? "month='" + Extract_Month("центральный012009.dbf") + "'" ? "month='" + Extract_Month("центральный112009.dbf") + "'" ? "month='" + Extract_Month("центральный12009.dbf") + "'" ? "month='" + Extract_Month("центральный52009.dbf") + "'" ? "month='" + Extract_Month("центральный.dbf") + "'" ? "month='" + Extract_Month("советский.dbf") + "'" ? FUNCTION Extract_Month(cFile) LOCAL cTemp, retval := "" cTemp := Extract_Number(File_Base(cFile)) IF LEN(cTemp) > 4 retval := LEFT(cTemp, LEN(cTemp) - 4) ENDIF RETURN (retval) FUNCTION File_Base(cFile) LOCAL nPos, cFileBase DO CASE CASE (nPos := RAT("\", cFile)) != 0 cFileBase := SUBSTR(cFile, nPos + 1) CASE (nPos := AT(":", cFile)) != 0 cFileBase := SUBSTR(cFile, nPos + 1) OTHERWISE cFileBase := cFile ENDCASE IF (nPos := AT(".", cFileBase)) != 0 cFileBase := SUBSTR(cFileBase, 1, nPos - 1) ENDIF RETURN (cFileBase) FUNCTION Extract_Number(lString) RETURN (Char_Only("0123456789", lString)) FUNCTION Char_Only(cOnly, cStr) LOCAL retval := "", i, ch FOR i := 1 TO LEN(cStr) ch := SUBSTR(cStr, i, 1); IF ch $ cOnly; retval += ch; ENDIF NEXT RETURN (retval) // Результат month='10' month='10' month='10' month='5' month='10' month='10' month='10' month='01' month='11' month='1' month='5' month='' month=''



полная версия страницы