Gå til innhold

bytte ut komma med dobbel backspace og ny komma?


Anbefalte innlegg

jeg trenger hjelp (for å si det mildt...)

 

jeg har en liste som egentlig skal være komma separert (er en inventory liste fra symantec ghost for de som lusrer på det.)

 

denne listen når jeg først fikk den ut var på følgende oppsett:

 

DX2200-RHE-PRIV
Adapter Address,00-19-DB-2E-D3-C4
SerialNumber,
Model,
Name,
UserName,
127-1
Adapter Address,00-0F-FE-17-B1-94
SerialNumber,CZC5061FFX
Model,HP dx2000 MT(PL162ES)
Name,127-1
UserName,
183-LARER
Adapter Address,00-0F-FE-33-F7-5F
SerialNumber,
Model,
Name,
UserName,

 

som dere muligens skjønner så blir ikke dette helt riktig når det importeres rundt omkring..

 

så klarte jeg å redusere denne til slik som dette:

DX2200-RHE-PRIV
,00-19-DB-2E-D3-C4
,
,
,
,
127-1
,00-0F-FE-17-B1-94
,CZC5061FFX
,HP dx2000 MT(PL162ES)
,127-1
,
183-LARER
,00-0F-FE-33-F7-5F
,
,
,
,

 

det eneste jeg trenger når er å få byttet alle kommaer med dobbel backspace og ny komma slik at all infoen kommer på samme linje slik som det skal være:

DX2200-RHE-PRIV,00-19-DB-2E-D3-C4,,,,
127-1,00-0F-FE-17-B1-94,CZC5061FFX,HP dx2000 MT(PL162ES),127-1,
183-LARER,00-0F-FE-33-F7-5F,,,,

 

det hadde kanskje vært mulig å få gjort noe slik at den bare bruker en backspace foran alle komme også..

 

men jeg har prøvd og prøvd, og letet etter koder på nettet og spørt ett par venner, men jeg får det faen ikke til! (helvete heller.. skulle fulgt bedre med i de timene..)

 

er det noen som kunne hjulpet meg med en løsning til dette?

hele greia ligger i en .txt fil slik som eksempel 2 viser..

 

jeg vil på forhånd takke for all mulig hjelp som jeg kan få!

Lenke til kommentar
Videoannonse
Annonse

Filen er nå teknisk sett egentlig ikke kommaseparert - den er først segmentert ved linjer, og deretter med komma (med èn linje dedikert til overskrift). Det er en vesentlig forskjell med dette da linjene også kan brukes til å segmentere tekstfilen. I VB.NET ville jeg trukket ut all data på følgende måte:

Imports System.IO

 

Public Class Form1

 

    ' Listen over alle gjenstander

    Dim Inventory As New List(Of Item)

 

    Public Sub LoadItems(ByVal Path As String)

 

        ' Åpne den gitte fil

        LoadItems(New FileStream(Path, FileMode.Open))

 

    End Sub

 

    Public Sub LoadItems(ByVal Stream As Stream)

 

        Dim aLines() As String, aData() As Object, Tell As Integer

        Dim LineSegment As Char() = {","c}

 

        ' Åpne den gitte strøm for avlesning

        Using oStream As New StreamReader(Stream)

 

            ' Hent all innhold og segmenter i linjer ...

            aLines = oStream.ReadToEnd.Split(Environment.NewLine)

 

            ' Initialiser array

            ReDim aData(aLines.Length - 1)

 

            ' ... og segmenter hver av disse i en kommadelt array

            For Tell = 0 To aLines.Length - 1

                aData(Tell) = aLines(Tell).Split(LineSegment, 2)

            Next

 

            ' Gå gjennom hver sjette linje (seks linjer definerer en gjenstand)

            For Tell = 0 To aLines.Length - 1 Step 6

 

                ' Lag gjenstanden

                Inventory.Add(New Item(aData(Tell)(0), aData(Tell + 1)(1), aData(Tell + 2)(1), _

                aData(Tell + 3)(1), aData(Tell + 4)(1), aData(Tell + 5)(1)))

 

            Next

 

        End Using

 

    End Sub

 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        ' Endre dette til hvor din tekstfil ligger

        LoadItems("C:\Data.txt")

    End Sub

End Class

 

Public Class Item

 

    ' Tilhørende egenskaper

    Public ID As String

    Public AdapterAddress As String

    Public SerialNumber As String

    Public Model As String

    Public Name As String

    Public UserName As String

 

    Public Sub New()

        ' Behold for å tillate serialisering

    End Sub

 

    Public Sub New(ByVal ID As String, ByVal AdapterAddress As String, ByVal SerialNumber As String, _

    ByVal Model As String, ByVal Name As String, ByVal UserName As String)

 

        ' Sett egenskaper

        With Me

            .ID = ID

            .AdapterAddress = AdapterAddress

            .SerialNumber = SerialNumber

            .Model = Model

            .Name = Name

            .UserName = UserName

        End With

 

    End Sub

 

End Class

Lenke til kommentar

:wow:

 

ser ut til at jeg må skaffe meg VB.NET.. (har VB 6 nå)

 

fra det jeg skjønte fra koden din, så deler den opp hver del som skal bli en linje i et eget segment som den igjen deler opp i hver del som skal deles av komma (hehe, mye deling der)

deretter linjer den det opp og komma separerer det.. stemmer det sånn ca?

 

skal komme tilbake med hvordan det går så fort jeg får tak i VB.NET (går vel til innkjøp av det imorgen..)

 

takker!

Lenke til kommentar
skal komme tilbake med hvordan det går så fort jeg får tak i VB.NET (går vel til innkjøp av det imorgen..)

7957797[/snapback]

Det er ikke nødvendig det. Du kan laste ned VB.NET helt gratis på Microsofts hjemmesider.

 

I alle tilfeller kan jeg godt oversette koden til VB6. Jeg brukte VB.NET kun fordi du ikke spesielt nevnte hvilken versjon av VB du benyttet.

Private Type Item

    ID As String

    AdapterAddress As String

    SerialNumber As String

    Model As String

    Name As String

    UserName As String

End Type

 

' Inneholder alle gjenstander

Private Inventory() As Item

Private ItemCount As Long

 

Public Sub LoadItems(Path As String)

 

    Dim aLines, aData() As Variant, Tell As Long

   

    ' Hent alle linjer fra den gitte fil

    aLines = Split(LoadFile(Path), vbNewLine)

   

    ' Initialiser array

    ReDim aData(LBound(aLines) To UBound(aLines))

   

    ' Gå gjennom hver av disse linjer og del dem opp i to etter komma

    For Tell = LBound(aLines) To UBound(aLines)

        aData(Tell) = Split(aLines(Tell), ",", 2)

    Next

   

    ' Gå gjennom seks og seks linjer og legg til en gjenstand

    For Tell = LBound(aLines) To UBound(aLines) Step 6

        AddItem aData(Tell)(0), aData(Tell + 1)(1), aData(Tell + 2)(1), aData(Tell + 3)(1), _

        aData(Tell + 4)(1), aData(Tell + 5)(1)

    Next

 

End Sub

 

Public Sub AddItem(ID, AdapterAddress, SerialNumber, Model, Name, UserName)

 

    ' Reinitialiser array (kan optimaliseres)

    ReDim Preserve Inventory(ItemCount)

 

    ' Sett verdier

    With Inventory(ItemCount)

        .ID = ID

        .AdapterAddress = AdapterAddress

        .SerialNumber = SerialNumber

        .Model = Model

        .Name = Name

        .UserName = UserName

    End With

 

    ' Øk antall elementer

    ItemCount = ItemCount + 1

 

End Sub

 

Public Function LoadFile(Path As String) As String

 

    Dim Free As Long, Buffer As String

   

    ' Se om filen faktisk eksisterer

    If Dir(Path) = "" Then

        Exit Function

    End If

   

    ' Hent ledig filnummer

    Free = FreeFile

   

    ' Åpne fil

    Open Path For Binary Access Read Lock Write As #Free

       

        ' Alloker buffer

        Buffer = Space(LOF(Free))

       

        ' Hent all data

        Get #Free, , Buffer

 

    Close #Free

   

    ' Returner filinnhold

    LoadFile = Buffer

 

End Function

 

Private Sub Form_Load()

 

    ' Last inn fil

    LoadItems "C:\Data.txt"

 

    Stop

 

End Sub

 

takker!

7957797[/snapback]

Ikke noe problem. :)

Endret av aadnk
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...