Oppure

Loading
21/04/11 9:31
Jollyman2
Salve a tutti.
Ho un grosso problema:
come faccio a ricavare il percorso di un file da una stringa?
Mi spiego meglio:
ho una stringa del tipo C:\csharp.exe -h
dove C:\csharp.exe è il percorso
-h è l'argomento
Io come faccio a recuperare solo il percorso?
Ho provato ad usare la classe Path e i suoi metodi, ma nessuno va.
Al massimo c'è un metodo GetFileNameWithoutExtension che mi restituisce come estensione del file .exe -h.
Vi prego aiutatemi.
aaa
21/04/11 9:36
Question
Usi le regular expressions, nel framework c'è un namespace apposito dove spicca in particolare la classe Regex.
msdn.microsoft.com/it-it/library/…
Ci sono anche due capitoli dedicati nella guida di Totem.
Ultima modifica effettuata da Question 21/04/11 9:43
aaa
21/04/11 17:57
ampeg
ciao, prova con questa funzioncina ;)


  Public Function FolderFromFileName(ByVal FileFullPath As String) As String

    Dim intPos As Integer
    intPos = FileFullPath.LastIndexOfAny("\")

    If intPos = -1 Then
      intPos = FileFullPath.LastIndexOfAny("/")
    End If

    intPos += 1

    Dim sBuffer As String = FileFullPath.Substring(0, intPos)

    'Decommentare la riga seguente se non si vuole includere il backslash finale
    'If sBuffer.EndsWith("\") Then sBuffer = sBuffer.Remove(sBuffer.Length - 1)

    Return sBuffer

  End Function



aaa
21/04/11 18:29
ampeg
chiedo venia, avevo capito male

in tal caso bisogna allora lavorare sull'estensione del file, se devi scorporare il percorso completo dal parametro di comando si presuppone che l'estensione sia sempre .exe o al limite .com poichè solitamente solo questi tipi di files supportano la riga di comando

potrebbe essere una cosa di questo tipo, penso che poi si possa ulteriormente affinare


    Dim sOrig As String = "c:\test.exe -h -d -qualsiasi cosa"

    Dim iPos As Integer = sOrig.IndexOf(".exe")

    Dim sDest As String = sOrig.Substring(0, iPos)

    sDest = sDest & ".exe"

    MessageBox.Show(sDest)

aaa
22/04/11 8:59
Il Totem
Non capisco perché non puoi usare le regex.
aaa
22/04/11 11:04
Question
Beh..
Personalmente avrei scelto le regex, ma comunque potresti anche fare una cosa del genere:
1) trovi l'ultimo index del carattere "."
2) ricerchi nella sottostringa che parte dal punto in poi il primo " "
3) problema risolto, usi substring sulla stringa originaria partendo da 0 sino all'indice dello spazio :pat:

N.B. questa soluzione funziona solamente se gli attributi NON hanno un punto (es. "-h.m";) e se c'è sempre almeno uno spazio dal percorso (quest'ultimo non è però un grande problema dato che comunque quando non è presente un carattere come index viene restituito -1, il che starebbe ad indicare che hai già ottenuto la path)
aaa