Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
482
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Maddili Maddili ist offline Mitglied Silber
    Registriert seit
    Feb 2010
    Beiträge
    65
    Nicht gleich schimpfen, aber ich hab gegoogelt und im Forum gesucht, aber nichts passendes gefunden.

    Folgendes:

    Ich habe eine Textdatei, in der ich einen bestimmten Text-Baustein auslesen will. Sieht so aus:

    ;-------------------------
    ;_____Muh //Die __ sind Leerzeichen
    ;-------------------------
    Muh macht die Kuh!
    Die Kuh macht Muh!
    ;-------------------------
    ;___Ende Muh
    ;-------------------------

    Ich habe mir das jetzt folgendermaßen gedacht:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    FileInputStream inputstream=new FileInputStream(DateiChooser.uebergabe);
    InputStreamReader reader=new InputStreamReader(inputstream);
    BufferedReader bff=new BufferedReader(reader);
    String line = bff.readLine();
     
    while line != null{
        String vergleich = bff.readLine();
        if(vergleich.contains(";") && vergleich.contains("Muh")){
     
            // So, und jetzt will ich aber nicht nur diese Zeile auslesen: ;_____Muh,
            // sondern AB der Zeile zuvor  (;-------------------------)
            // bis zur letzten Zeile des Textblocks: (;-------------------------) 
            // (nach der  ;___Ende Muh  Zeile
            // Und das ganze soll am besten in einen String, Vector, Arraylist oder sonstiges.
            
     
    }


    Kann mir jemand helfen?

    mfg Maddin
     

  2. #2
    Maddin Maddin ist offline Mitglied Silber
    Registriert seit
    Jul 2010
    Beiträge
    66
    Hallo,

    Du könntest doch gleich die gesamte Textdatei (also den kompletten Inhalt) als String auslesen und diesen dann mit dem StringTokenizer passend zerlegen.

    Hoffe, ich hab das richtig verstanden...

    Gruß,
    Martin
     

  3. #3
    janus23 janus23 ist offline Mitglied
    Registriert seit
    Dec 2009
    Beiträge
    23
    Hört die Schleife überhaupt jemals auf?
    Auf line steht immer die erste Zeile, und die neuen Zeilen schreibst du dann ja auf vergleich. Und line wird nie geupdatet, also steht steht da immer nur das selbe drauf.
    Das auch gleich mal als Antwort, warum die erste Zeile nicht gelesen wird

    Also du hast da dieses File, und daraus willst du nur einen Block auslesen. Dann würd ich das so, oder so ähnlich machen:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    FileInputStream inputstream=new FileInputStream(DateiChooser.uebergabe);
    InputStreamReader reader=new InputStreamReader(inputstream);
    BufferedReader bff=new BufferedReader(reader);
    String line = "";
    String matchText = "Muh"; //Der Text nachdem gesucht wird
    String textFound = "";
     
    while((line = bff.readLine())!=null)
    {
    if(line.contains(mathText)
    textFound = matchText;
    }
     
    if(textFound != null)
    System.out.println("Text gefunden: " + textFound);
    else
    System.out.println("Text wurde nicht gefunden!");
     
    bff.close();
     

  4. #4
    Maddili Maddili ist offline Mitglied Silber
    Registriert seit
    Feb 2010
    Beiträge
    65
    Moin zusammen!

    Zitat Zitat von janus23 Beitrag anzeigen
    Hört die Schleife überhaupt jemals auf?
    Auf line steht immer die erste Zeile, und die neuen Zeilen schreibst du dann ja auf vergleich. Und line wird nie geupdatet, also steht steht da immer nur das selbe drauf.
    Das auch gleich mal als Antwort, warum die erste Zeile nicht gelesen wird
    Aaahh, jetzt weiß ich wo die NullPointerException herkam - Danke!

    Das eigentliche Problem konnte ich aber bisher noch nicht lösen.

    Nur mal so ein Gedanke: Wie wäre es mit einem Counter?
    Also im Pseudo-Code etwa so:

    // Bla bla bla BufferedReader usw.

    int muhcount=0;

    if(vergleich.startswith(";_____Muh ")){
    do while(!vergleich.startswith(";___Ende Muh")){
    muhcount++;
    }

    String temptext= readline(muhcount=1) bis (muhcount.größteZahl - 1)


    Dann hätte ich den Textblock zwischen den ;----------------------------,
    also:

    Muh macht die Kuh!
    Die Kuh macht Muh!

    String textblock = ";-------------------------\n;_____Muh \n;-------------------------\n" + temptext + ";-------------------------\n;___Ende Muh\n;-------------------------"


    Versteht ihr, was ich meine? Ist selbst für mich ein wenig verwirrend. Tja....Montag Morgen eben..

    mfg Maddin
     

  5. #5
    onlyfoo-na Tutorials.de Gastzugang
    Was fürn Bogus, und Java-(Pseudo-)Code ist das auch nicht

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    
    boolean save = false;
    while((line = readline()) != null) {
        if(line.startsWith("__Start"))
            save = true;
        if(save) result += line;
        if(line.startsWith("__End")) break;
    }
    close();

    So ungefär gehst du da ran.
     

  6. #6
    Maddili Maddili ist offline Mitglied Silber
    Registriert seit
    Feb 2010
    Beiträge
    65
    @onlyfoo-na

    Danke, hat funktioniert.
    Manchmal sollte man einfach pragmatischer denken.

    mfg
    Maddin
     

Ähnliche Themen

  1. Text in Textblock ausrichten?
    Von unrealzero_php im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 29.08.07, 22:32
  2. Bestimmten Text aus Datei auslesen und in eine andere Schreiben
    Von wissensdurstxxl im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 08.08.07, 10:03
  3. Datei nach einem bestimmten Schema auslesen
    Von dark_mascot im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 03.02.05, 14:17
  4. Bestimmten ListIndex auslesen?
    Von Janares im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 26.04.03, 19:12
  5. auslesen von bestimmten ....
    Von origin^sad im Forum PHP
    Antworten: 4
    Letzter Beitrag: 05.08.02, 15:02