Avatar billede dollas Nybegynder
12. september 2004 - 13:37 Der er 7 kommentarer og
1 løsning

tekst opbrydning.

Dette er resultatet fra en ftp:

drwxr-xr-x  1 ftp      ftp            0 Sep 01 19:38 Adobe Illustrator 10
drwxr-xr-x  1 ftp      ftp            0 Sep 07 09:36 subdir
-rw-r--r--  1 ftp      ftp      1871872 Sep 07 11:52 a.zip
-rw-r--r--  1 ftp      ftp      21814474 Sep 07 09:53 z.zip


Er der nogle der har en ide til at bryde det op, så jeg får filnavn - størrelse - dato - tid ???

JEg er prøvet lidt af hvert, men det er ikke lige sådan til...
Avatar billede arne_v Ekspert
12. september 2004 - 14:17 #1
formatet er:

mode/procetion
mellemrum
tal (hvad ????)
mellemrum
user
mellemrum
group
mellemrum
størrelse
mellemrum
navn (som kan indeholde mellemrum)

så umiddelbart vil jeg sige at du kan parse linien ved at dinde de første udfra
mellemrummene og antage at resten er filnavn.

Jeg kan evt. godt lave noget kode.

VIGTIGT: der er ingen standard for FTP dir output - ovenstående er bare
Unix og andre OS i Unix kompatibel mode.
Avatar billede arne_v Ekspert
12. september 2004 - 14:33 #2
Jeg glemte dato, men ...
Avatar billede arne_v Ekspert
12. september 2004 - 14:48 #3
Noget at starte på:

Imports System

Class MainClass

    Public Shared Sub Parse(ByVal line As String)
        Dim protection As String = line.Substring(0, 10).Trim
        Dim owner As String = line.Substring(11, 19).Trim
        Dim size As Integer = Integer.Parse(line.Substring(32, 8).TrimEnd)
        Dim tim As String = line.Substring(40, 12).Trim
        Dim filename As String = line.Substring(53).Trim
        Console.WriteLine(filename & " " & size & " " & tim)
    End Sub

    Public Shared Sub Main(ByVal args As String())
        Parse("drwxr-xr-x  1 ftp      ftp            0 Sep 01 19:38 Adobe Illustrator 10")
        Parse("drwxr-xr-x  1 ftp      ftp            0 Sep 07 09:36 subdir")
        Parse("-rw-r--r--  1 ftp      ftp      1871872 Sep 07 11:52 a.zip")
        Parse("-rw-r--r--  1 ftp      ftp      21814474 Sep 07 09:53 z.zip")
    End Sub
End Class
Avatar billede arne_v Ekspert
12. september 2004 - 14:49 #4
Jeg droppede parsningen efter mellemrum og valgte bare at tage de efter
position. Det er nemmere. Omend måske ikke helt så robust.
Avatar billede arne_v Ekspert
12. september 2004 - 15:05 #5
Her er en variant som tæller mellemrum:

Imports System

Class MainClass
    Public Shared Function Eater(ByVal line As String, ByVal ix As Integer, ByVal n As Integer) As String
        Dim res As String = ""
        Dim line2() As Char = line.ToCharArray
        Dim ws As Integer = 0
        Dim i As Integer
        For i = 1 To (line2.Length - 1)
            If line2(i) = " " And line2(i-1) <> " " Then
                ws = ws + 1
            End If
            If ws >= ix And ws < (ix + n) Then
                res = res & line2(i)
            End If
        Next
        Eater = res.Trim
    End Function
   
    Public Shared Sub Parse(ByVal line As String)
        Dim protection As String = Eater(line, 0, 1)
        Dim owner As String = Eater(line, 1, 3)
        Dim size As Integer = Integer.Parse(Eater(line, 4, 1))
        Dim tim As String = Eater(line, 5, 3)
        Dim filename As String = Eater(line, 8, 100)
        Console.WriteLine(filename & " " & size & " " & tim)
    End Sub

    Public Shared Sub Main(ByVal args As String())
        Parse("drwxr-xr-x  1 ftp      ftp            0 Sep 01 19:38 Adobe Illustrator 10")
        Parse("drwxr-xr-x  1 ftp      ftp            0 Sep 07 09:36 subdir")
        Parse("-rw-r--r--  1 ftp      ftp      1871872 Sep 07 11:52 a.zip")
        Parse("-rw-r--r--  1 ftp      ftp      21814474 Sep 07 09:53 z.zip")
    End Sub
End Class
Avatar billede dollas Nybegynder
12. september 2004 - 15:42 #6
Super ...

Er jeg så en tosse hvis jeg spørger hvordan jeg får dato ud?
Avatar billede arne_v Ekspert
12. september 2004 - 15:44 #7
Koden finder jo da tiden.

Men vil du gerne have den over i en DateTime struct ?
Avatar billede dollas Nybegynder
12. september 2004 - 15:56 #8
Mig der er en idiot... Dato og tid er i tim feltet...

sorry...

:)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester