Textdatei aufteilen

  • VB

  • fexs
  • 2048 Aufrufe 6 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Textdatei aufteilen

    Hallo,
    weil ich verzweifelt bin auch hier nochmal:
    Also ich muss eine Textdatei in mehrere Textdateien aufteilen. Sie soll immer dann geteilt werden, wenn ein neues Wort am Anfang der Zeile steht.
    Hab schon gesucht aber find nix. Hat irgendeiner eine Ahnung wie ich dies machen könnte?
    Ich dachte als VB Programm wärs am besten aber andere Programme oder Lösungen wären auch ok;)
    Also bin dankbar für jeden Vorschlag!
    Bis dann!
    gruß fexs
    [COLOR="DarkRed"][SIZE="3"]Godspeed[/SIZE][/color] on [COLOR="DarkRed"][SIZE="3"]Devils[/SIZE][/color] Thunder

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von fexs ()

  • Hmmm ...
    Die fachliche Anforderung ist jetzt aber nicht eindeutig.
    Wobei ... Eindeutig ist sie schon, aber sie macht für mich wenig Sinn.

    Beispiel für Test:


    Das ist ein Test.
    Der testet was.
    Das ist einfach.
    Das ist halt so.
    Der ist kein neues Wort


    Ich laufe jetzt also die Textdatei durch.
    1. "Das" ist ein neues Wort. Mache eine neue Datei auf und speichere.
    2. "Der" ist auch neu. Neue Datei
    3. "Das" ist kein neues Wort. Weitermachen.
    4. "Das" ist kein neues Wort. Weitermachen.
    5. "Der" ist kein neues Wort. Weitermachen.
    Fertig

    Ergebnis: 2 Dateien.
    Willst Du das wirklich so haben?
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...
  • nein so müssten es 4 Dteien sin sodass immer gesplittet wird wenn ein neues Word am Anfang steht auch wenns schonmal des selbe war. :D
    Wenn du es mit sonem Beispiel machst isses sinnlos aber es hat schon seinen sinn.

    Also ein Beispiel das ich schonmal verwendet hab als ich das gefragt hab:


    Große Textdatei:

    Quellcode

    1. S AS N00E060 010010010010010010010010010010010010013013010010010010010010010010010010010010010010010010 000010604
    2. S AS N00E090 010010010010010010010042018119098033017022020010021024039074059056072101101101101101033048 000020604
    3. S AS N00E120 124124124090082010019082058015023017010010014010010010010010010010010010010010010010010010 000030604
    4. S AS N00E150 010010010010010010010010010010010010010010010010010010010010010010013013010010010010010010 000040604
    5. S AS N00W120 010010010010010010010010010010010010010010010010010010010010010010010010010010010010078037 000050604
    6. S AS N00W150 010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010 000060604
    7. SAFRD MG FM2JMAHAJANGA MDG 013860906
    8. SAFRD MG FM3PFMMM 013870906
    9. SAFRD MIS HL111710VDHW N32185160E015043970 N32185160E015043970E0020002302 413WGEMISURATA 013880913
    10. SAFRD MIS HL2JMISURATA LBY 013890913
    11. SAFRD MIS HL3PHLLL 013900913
    12. SAFRD MMA HE111640VDH N31191100E027132040 N31191100E027132040E0030000932 WGEMERSA MATRUH 013910612
    13. SAFREAENRT CNENB DA1 N B N36112509E006433783 E0009 WGE CONSTANTINE 019210410
    14. SAFREAENRT CNENB DA2PDAAA 019220704
    15. SAFREAENRT CNLNB GM1 N B N34171400W006371400 W0025 WGE KENITRA 019230513
    16. SAFREAENRT CNLNB GM2PGMMM 019240703
    17. SAFREAENRT CNUNB GM1 N B N34475900W001535900 W0011 WGE OUJDA 019250207
    18. SAFREAENRT CNUNB GM2PGMMM 019260908
    Alles anzeigen



    Nun will ich immer wenn eine neues Wort am Anfang der Zeile steht eine neue Textdatei erstelle, diie nur diesen Inhalt hat also dann so:

    Inhalt der Textdatei1 für "S":

    Quellcode

    1. S AS N00E060 010010010010010010010010010010010010013013010010010010010010010010010010010010010010010010 000010604
    2. S AS N00E090 010010010010010010010042018119098033017022020010021024039074059056072101101101101101033048 000020604
    3. S AS N00E120 124124124090082010019082058015023017010010014010010010010010010010010010010010010010010010 000030604
    4. S AS N00E150 010010010010010010010010010010010010010010010010010010010010010010013013010010010010010010 000040604
    5. S AS N00W120 010010010010010010010010010010010010010010010010010010010010010010010010010010010010078037 000050604
    6. S AS N00W150 010010010010010010010010010010010010010010010010010010010010010010010010010010010010010010 000060604


    Inhalt der Textdatei2 für "SAFRD"
    :

    Quellcode

    1. SAFRD MG FM2JMAHAJANGA MDG 013860906
    2. SAFRD MG FM3PFMMM 013870906
    3. SAFRD MIS HL111710VDHW N32185160E015043970 N32185160E015043970E0020002302 413WGEMISURATA 013880913
    4. SAFRD MIS HL2JMISURATA LBY 013890913
    5. SAFRD MIS HL3PHLLL 013900913
    6. SAFRD MMA HE111640VDH N31191100E027132040 N31191100E027132040E0030000932 WGEMERSA MATRUH 013910612


    Inhalt der Textdatei3 für "SAFREAENRT":

    Quellcode

    1. SAFREAENRT CNENB DA1 N B N36112509E006433783 E0009 WGE CONSTANTINE 019210410
    2. SAFREAENRT CNENB DA2PDAAA 019220704
    3. SAFREAENRT CNLNB GM1 N B N34171400W006371400 W0025 WGE KENITRA 019230513
    4. SAFREAENRT CNLNB GM2PGMMM 019240703
    5. SAFREAENRT CNUNB GM1 N B N34475900W001535900 W0011 WGE OUJDA 019250207
    6. SAFREAENRT CNUNB GM2PGMMM


    und so weiter...



    Ich weiß es ist ein langes Beispiel. Die Datei hat 270000 Zeilen also isses im Vergleich noch wenig :D

    Mir hat schon jemand ein Tipp gegeben aber ich komm nicht recht weiter 0o
    hast du ne Idee?
    Gruß fexs
    [COLOR="DarkRed"][SIZE="3"]Godspeed[/SIZE][/color] on [COLOR="DarkRed"][SIZE="3"]Devils[/SIZE][/color] Thunder

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von fexs ()

  • OK.
    Ich kann also davon ausgehen, dass die Datei sortiert ist?

    Quellcode

    1. Private Sub Command1_Click()
    2. Dim target As String
    3. Dim merker As String
    4. Dim wort As String
    5. Dim fcntr As Long
    6. fcntr = 1
    7. merker = ""
    8. Open "E:\splitt\source.txt" For Input As #1
    9. Do While Not EOF(1)
    10. Line Input #1, s
    11. If (Len(s) > 0) Then wort = Split(s, " ", 2)(0)
    12. If (merker <> wort) Then
    13. Close #2
    14. target = "target_" & Str$(fcntr) & ".txt"
    15. Open "E:\splitt\" & target For Output As #2
    16. fcntr = fcntr + 1
    17. merker = wort
    18. End If
    19. Print #2, s
    20. Loop
    21. Close #1
    22. Close #2
    23. End Sub
    Alles anzeigen



    Hab fertig ...
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von wasawasa ()

  • Ok ich danke dir vielmals du hast genau das programmiert was ich gesagt hab nur leider wurde des iredendwie scheiße weil ich net gesehen hab dass da zwischendrin 16000 verschiedene Wörter stehn-.-
    Ich trau mich kaum zu fragen aber wenn du mal gaanz viel Zeit un Langeweile hast, könntest du mal überlegen ob es auch irgendeine Möglichkeit gibt nicht das ganze erste Wort sondern nur die ersten 5 Buchstaben einer jeden Zeile zu vergleichen? *_*
    Weil die Datei ist echt saumäßig wichtig meine ganze Firma würds dir danken:D
    Ich weiß ich verlang ziehmlich viel immer aber en Forum is zum helfen un beholfen werden ja da deshalb versuch ichs mal;)
    Gruß
    [COLOR="DarkRed"][SIZE="3"]Godspeed[/SIZE][/color] on [COLOR="DarkRed"][SIZE="3"]Devils[/SIZE][/color] Thunder
  • Sag ich doch immer.
    Der Code ist genau so gut wie die Anforderung :-).

    Daran bin ich schon gewöhnt. Ist halt das Leiden eines Analysten.

    Die ersten 5 Buchstaben eines Satzes zu vergleichen ist überhaupt kein Problem
    Aber ob es die Aufgabe löst ...

    Ersetze:

    Quellcode

    1. If (Len(s) > 0) Then wort = Split(s, " ", 2)(0)

    durch

    Quellcode

    1. If (Len(s) > 0) Then wort = Left (s & " ", 5)
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von wasawasa ()