# Datum in *.txt suchen und ersetzen



## ricky (5. Jan 2007)

Komme nicht weiter mit meinem Problem

habe eine txt Datei die ich in eine Mysql Datenbank einlesen muss mit java. Datei sieht so aus

*Datum;Zeit;Zeitzone;Lufttemperatur [°C];Relative Luftfeuchte [%];Luftdruck [hPa];Windgeschwindigkeit [m/s];Windmaximum [m/s];Windrichtung [°];Verdunstung (Haude) [mm];

03.12.06;00:00;MEZ;14,9;54,7;1011,3;0,0;0,0;0,0;1,7;
*

Problem 1
Datum in der Datei finden

Problem 2
Datum umwandeln für Mysql von dd.MM.yy nach yyyy-MM-dd

Problem 3
Decimal trennzeichen ersetzen für Mysql von Komma in Punkt

Bis jetzt habe ich nach dem Muster des Datums gesucht und es auch gefunden allerdings kann ich es danach nicht umwandeln und in eine neue Datei schreiben.

```
/* Datum finden Umwandeln */

 import java.io.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.lang.String;
 
 
 public class datum1
 {
   public static void main(String[] args)
   {
     LineNumberReader f;
     String line,datum;

     try {
       f = new LineNumberReader(
           new FileReader("c:\\test.txt"));

       while ((line = f.readLine()) != null) {
             System.out.print(f.getLineNumber() + ": ");
             System.out.println(line);


        Pattern p = Pattern.compile("\\d\\d\\.\\d\\d\\.\\d\\d");  //suche nach Datum Muster
        Matcher m = p.matcher(line);

          if (m.find()) {
            System.out.println("Muster an Pos. " + m.start());
                System.out.println("Muster ist: " + m.group());
                datum = m.group();
                System.out.println("datum ist: " + datum);

           //da komme ich nicht weiter habe das Datum als String in datum
           //SimpleDateFormat sdf = new SimpleDateFormat( "dd.MM.yy" );
           //return sdf.format( date );


          }
          else {
            System.out.println("Muster nicht gefunden");
          }

       }
       f.close();
     }

     catch (IOException e) {
       System.out.println("Fehler beim Lesen der Datei");
     }

   }
 }
```

Vielen dank  im Voraus für ihre Tipps oder Hilfe


----------



## cimnine (5. Jan 2007)

Hy

Wenn du beim einlesen eine Zeile nach der andere liest, kannst du jede Zeile splitten. etwa so


```
public void read(File f) {
            BufferedReader br = new BufferedReader(new FileReader(f));
            String tmp;
            String[] splitted;
            while ((tmp = br.readLine()) != null) {
                splitted=tmp.split(";");
            }
}
```

1) Datum in der Datei finden 
nun kannst du auf die einzelnen Elemente zugreiffen:
splitted[0] >> Datum
splitted[1] >> Zeit
etc.

2) Datum umwandeln für MySQL
Wenn das Datum immer gleich ausschaut, kannst du dieses mit SimpleDateFormat parsen.
Als Hinweis zur Benutzung hier: http://www.torsten-horn.de/techdocs/java-date.htm

3) Dezimal Trennzeichen ersetzen (von Komma in Punkt)
du kannst auf einen String die replace-Methode gebrauchen:

```
String s = "10,34";
s.replace(",",".");
```

Ich hoffe ich konnte dir ein Wenig helfen, wie du dein Problem angehen könntest.

Greez Chris


----------



## ricky (12. Jan 2007)

Hi,

Das mit dem parsen des Datums habe ich nicht hingekriegt, habe das Problem aber gelöst nur bin ich mit dem Ergebnis nicht so richtig zufrieden weil meiner Ansicht nach, ist es total unprofessionell. Ich weiss aber nicht wie ich das anders machen soll. Bin relativer Anfänger in Java. Für weitere Tipps bin ich ihnen dankbar.

Datei
test.txt 

*Datum;Zeit;Zeitzone;Lufttemperatur [°C];Relative Luftfeuchte [%];Luftdruck [hPa];Windgeschwindigkeit [m/s];Windmaximum [m/s];Windrichtung [°];Verdunstung (Haude) [mm];
//leerzeile in der Datei
15.12.06;13:13;MEZ;5.8;71.3;991.1;1.6;3.2;58.0;1.2;
*

Ergebnis 
test1.txt

*06-12-15;13:13;MEZ;5.8;71.3;991.1;1.6;3.2;58.0;1.2*





```
/*
*Datum finden Umwandeln
*/

 import java.io.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.lang.String;
 
 
 public class datum1
 {
   public static void main(String[] args)
   {
     LineNumberReader f;
     String line, datum, neuesdatum;

     try {
       f = new LineNumberReader(
           new FileReader("c:\\test.txt"));

       while ((line = f.readLine()) != null) {



             System.out.print(f.getLineNumber() + ": ");
             System.out.println(line);

           

             Pattern p = Pattern.compile("\\d\\d\\.\\d\\d\\.\\d\\d");  //suche nach Datum Muster
             Matcher m = p.matcher(line);
                     if (m.find()) {
                     System.out.println("Muster an Pos. " + m.start());
                     System.out.println("Muster ist: " + m.group());

             datum = m.group();

            System.out.println("datum ist: " + datum);

              char temp[] = datum.toCharArray();               //gefundenes Datum umsortieren
              neuesdatum = "" + temp[6] + temp[7]  + '-' +
              temp[3] + temp[4] + '-' + temp[0] + temp[1];
              
               System.out.println("neues datum ist: " + neuesdatum);

              String tmp;                                        //Zeile Splitten und in Arrays einlesen
              String[] splitted;
              tmp = line;
              splitted = tmp.split(";");
              
              System.out.println("Eingelsen: " + splitted[0]);
                System.out.println("Eingelsen: " + splitted[1]);
                System.out.println("Eingelsen: " + splitted[2]);
                System.out.println("Eingelsen: " + splitted[3]);
                System.out.println("Eingelsen: " + splitted[4]);
                System.out.println("Eingelsen: " + splitted[5]);
                System.out.println("Eingelsen: " + splitted[6]);
                System.out.println("Eingelsen: " + splitted[7]);
                System.out.println("Eingelsen: " + splitted[8]);
                System.out.println("Eingelsen: " + splitted[9]);


              
              PrintWriter w = new PrintWriter(new FileWriter("c://test1.txt"));  //In neue Datei Schreiben

              w.printf("" +neuesdatum+";"+ splitted[1]+";"+ splitted[2]+";"+ splitted[3]+";"+ splitted[4]+";"+ splitted[5]+";"+ splitted[6]+";"+ splitted[7]+";"+ splitted[8]+";"+ splitted[9]);

                w.flush();
                w.close();

          }
          else {
            System.out.println("Muster nicht gefunden");
          }

       }
       f.close();
     }

     catch (IOException e) {
       System.out.println("Fehler beim Lesen der Datei");
     }

   }
 }
```

danke für eure Hilfe


----------

