Hy Leute,
ich hab ein kleines Problem mit meinem Java Code.
Mein Java code soll eine .txt Datei einlesen, dass sind diese drei zeilen:
1.5,10,100,3.14
"Text",123.46,"zweiundvierzig",12/31/79
1,1.1,1.2,1.3
Und In Deutschland soll sie so aussehen:
"1,5",10,100,"3,14"
"Text","123,46","zweiundvierzig",31.12.79
1,"1,1","1,2","1,3"
Die .txt Datei sollen wir in unserem workspace reinlegen damit der Algorithmus, den ich gleich vorstellen werde einlesen soll und dann als neue Datei auslesen soll.
Für genauere Information pflege ich die Fragstellung nochmals ein {
CSV-Dateien umwandeln Englisch → Deutsch
In Ihrer Firma werden Daten aus Tabellenkalkulationsprogrammen und Datenbanken
häufig als CSV („comma separated values“) ausgetauscht. Solche Dateien bestehen für
jede Tabellenzeile aus einer Textzeile, darin für jede Tabellenspalte ein Eintrag. Die
Einträge sind durch Komma („.“) getrennt und können Zahlen, Datumsangaben, oder in
doppelte Anführungszeichen eingeschlossene Texte sein. Eine Zahl besteht aus Ziffern,
eventuell einem Dezimalpunkt, und weiteren Ziffern als Nachkommastellen. Weiterhin
können auch Datumsangaben in der Form Monat/Tag/Jahr vorhanden sein. Die Aufgabe
ist nun folgende:
Für die deutsche Niederlassung dieser internationalen Firma sollen diese Dateien an die
deutschen Konventionen angepasst werden, so dass Zahlen mit Dezimalkomma (statt
Dezimalpunkt) dargestellt werden und Datumsangaben mit Punkten in der Form
Tag.Monat.Jahr. Dann kann das Komma allerdings nicht mehr so ohne weiteres als
Trennzeichen verwendet werden, oder alle Zahlen mit Dezimalkomma müssen durch
Anführungszeichen „geschützt“ werden. Eine Beispieldatei aus den USA sähe
folgendermaßen aus: }
Hier der Code den ich soweit programmiert habe. Es handelt sich um ein MINIMALEN FEHLER.. Leider fehlt mir das WISSEN dazu ich hoffe ihr könnt mir helfen!!!
Hier nun der Code:
ich hab ein kleines Problem mit meinem Java Code.
Mein Java code soll eine .txt Datei einlesen, dass sind diese drei zeilen:
1.5,10,100,3.14
"Text",123.46,"zweiundvierzig",12/31/79
1,1.1,1.2,1.3
Und In Deutschland soll sie so aussehen:
"1,5",10,100,"3,14"
"Text","123,46","zweiundvierzig",31.12.79
1,"1,1","1,2","1,3"
Die .txt Datei sollen wir in unserem workspace reinlegen damit der Algorithmus, den ich gleich vorstellen werde einlesen soll und dann als neue Datei auslesen soll.
Für genauere Information pflege ich die Fragstellung nochmals ein {
CSV-Dateien umwandeln Englisch → Deutsch
In Ihrer Firma werden Daten aus Tabellenkalkulationsprogrammen und Datenbanken
häufig als CSV („comma separated values“) ausgetauscht. Solche Dateien bestehen für
jede Tabellenzeile aus einer Textzeile, darin für jede Tabellenspalte ein Eintrag. Die
Einträge sind durch Komma („.“) getrennt und können Zahlen, Datumsangaben, oder in
doppelte Anführungszeichen eingeschlossene Texte sein. Eine Zahl besteht aus Ziffern,
eventuell einem Dezimalpunkt, und weiteren Ziffern als Nachkommastellen. Weiterhin
können auch Datumsangaben in der Form Monat/Tag/Jahr vorhanden sein. Die Aufgabe
ist nun folgende:
Für die deutsche Niederlassung dieser internationalen Firma sollen diese Dateien an die
deutschen Konventionen angepasst werden, so dass Zahlen mit Dezimalkomma (statt
Dezimalpunkt) dargestellt werden und Datumsangaben mit Punkten in der Form
Tag.Monat.Jahr. Dann kann das Komma allerdings nicht mehr so ohne weiteres als
Trennzeichen verwendet werden, oder alle Zahlen mit Dezimalkomma müssen durch
Anführungszeichen „geschützt“ werden. Eine Beispieldatei aus den USA sähe
folgendermaßen aus: }
Hier der Code den ich soweit programmiert habe. Es handelt sich um ein MINIMALEN FEHLER.. Leider fehlt mir das WISSEN dazu ich hoffe ihr könnt mir helfen!!!
Hier nun der Code:
Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;
public class Parser {
int time;//Laufzeitparameter
String oldformat;//Altes Format
String dummy;//Hilfsstring
String newformat;//Neues Format
String ausgabe;
String dategerman;
char comma = '\u002C';// Unicode fuer ,
char point = '\u002E';// Unicode fuer .
char solidus = '\u002F';//Unicode fuer
public void read() {
try {
File datei = new File("test1.txt");//Einlesen der Textdatei (korrekter Name benoetigt)
FileReader reader = new FileReader(datei);
BufferedReader buffer = new BufferedReader(reader);
while (buffer.ready()==true){
oldformat = buffer.readLine();
StringTokenizer str = new StringTokenizer(oldformat);
while (str.hasMoreTokens())
dummy = str.nextToken();
time = dummy.length();//Laufzeitvariable
newformat = replace(time);
print(newformat);
}
buffer.close();
reader.close();
}
catch (IOException e) {
System.err.println("Keine Datei gefunden");
}
}
public String replace(int time){ //Methode
String dummy2;//Lokale Stringvariable
for (int i = 0; i < time; ++i){
dummy2 = oldformat.replace(point, comma);
newformat = dummy2.replace(solidus,point);
}
ausgabe = dateparser (newformat);
return ausgabe;
}
public String dateparser (String newformat){
int k = 0;
char a [] = new char[8];
char b [] = new char[8];
String parsedate;
String subdate;
StringBuffer str = new StringBuffer(newformat); // Hier wird das Objekt str erzeugt
for (int j=0;j<str.length();++j){
if (str.charAt(j) == point && k ==0){
++k;
subdate = newformat.substring(j-2, j+6); //Erstellung des Substrings Datum mm.dd.yy
for (int c = 0; c < a.length; ++c){ //Positionsveraenderung der Character von mm.dd.yy zu dd.mm.yy
a[c]= subdate.charAt(c);
b[c]= subdate.charAt(c);
}
a[0]= b[3];
a[1]= b[4];
a[3]= b[0];
a[4]= b[1];
//Loeschen des alten Datums und Einfuegen des neuen Datums in den StringBuffer
parsedate = new String(a);
str.delete(j-2, j+2);
str.replace(j-2, j+2, parsedate);
}
else {}
}
dategerman = str.toString();//Parsen des StringBuffers in Ausgabestring
--k;
return dategerman;
}
public void print(String format) {
try {
FileWriter writer = new FileWriter ("Format.txt");
BufferedWriter buffer = new BufferedWriter (writer);
buffer.write(format);
//buffer.append( System.getProperty("line.separator") );
buffer.close();
writer.close();
}
catch (IOException e) {
e.printStackTrace();
}
System.out.println(format);
}
public static void main(String[] args) {
Parser norm = new Parser();
norm.read();
}
}
Zuletzt bearbeitet von einem Moderator: