Jeg skal bruge en funktion, som går at den søger efter eg. \"c:\\windows\\skrivebord\\mit-billede.jpg\" i en længere text, og så fjerner den \"c:\\windows\\skrivebord\" Jeg er godt klar over at man kan bruge \"replace\" men stien kan ændre sig, og jeg kan ikke lave en replace til alle mulige stier. Så hvordan laver jeg så sådan en funktion der gør det for mig?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Function GetFileName(FullPath) PosF = 0 For Pos = Len(FullPath) To 1 Step -1 Select Case Mid(FullPath, Pos, 1) Case \"/\", \"\\\": PosF = Pos + 1: Pos = 0 End Select Next If PosF = 0 Then PosF = 1 GetFileName = Mid(FullPath, PosF) picturePath = \"\" & Mid(FullPath, PosF) End Function
arh her linien: picturePath = \"\" & Mid(FullPath, PosF)
skulle ikke med:
Function GetFileName(FullPath) PosF = 0 For Pos = Len(FullPath) To 1 Step -1 Select Case Mid(FullPath, Pos, 1) Case \"/\", \"\\\": PosF = Pos + 1: Pos = 0 End Select Next If PosF = 0 Then PosF = 1 GetFileName = Mid(FullPath, PosF) End Function
windows skriver lokasjoner på disk med backslash (\\), men hvis denne \"funksjon\" skal kunne håndtere URL\'er i tilleg, så kan man jo bare modifisere litt:
function findImgName( byVal picPath ) startIndex = -1 picName = null if( LEN( picPath ) > 0 ) then if( InStr(\"/\") > 0 ) then startIndex = InStrRev( picPath, \"/\" ) + 1 else if( InStr(\"\\\") > 0 ) then startIndex = InStrRev( picPath, \"\\\" ) + 1 end if end if end if if( startIndex > -1 ) then picName = MID( picPath, startIndex ) end if findImgName = picName end function
Nå har jeg antatt at alle stier til bilder er på lokaldisk (altså i format drev:\\folder\\folder ...), så kan man skrive funksjonen jeg allerede har skrevet om til en generisk replace funksjon:
picPath = \"Se billede c:\\windows\\billeder\\imge1.jpg det er pænt.\"
picName = findImgName( picPath )
response.write picName
function findImgName( byVal picPath ) Dim replaceStr, tmpArr, startIndex, returnStr tmpArr = SPLIT( picPath, \" \" ) replaceStr = null returnStr = null for i = 0 to UBOUND( tmpArr ) if( InStr( tmpArr(i), \"\\\" ) > 0 ) then replaceStr = MID( tmpArr(i), 1, InStrRev( tmpArr(i), \"\\\" ) ) exit for end if next if( NOT IsNull(replaceStr) ) then returnStr = replace( picPath, replaceStr, \"\" ) end if findImgName = returnStr end function
eagleeye >> så skal man sørge for at VBScript versjon 5 kjører på serveren. Da er det heller bedre å benytte seg av JScript som har RegExp object innebygget fra tidligere versjoner.
nute>> Ja men det antager jeg også findes på de forskellige web-hoteller. Jeg har det til at virke på en Window98 computer, så tror jeg også det virker på stort set alt andet.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.