Hi,
ich melde mich nochmal bezüglich if-els-endif in einem Textfile erkenne...
Ich habe ein Textfile, welches ich zeilenweise durchlaufe. Hierbei will ich die darin enthaltenen if-(else)-endif Strukturen erkennen. Diese will ich dann in ein neues Textfile schreiben, aber es soll dabei z.B. der Inhalt vom Else-Zweig nicht mit zurückgeschrieben werden, wenn die If-Bedingung TRUE ist! Das Prüfen der if-Bedingung ist hier nicht von Bedeutung - das klappt bereits.
Ich grübel nun schon ewig über einem geeigneten Algorithmus - aber bisher wollte nichts zu 100% klappen. Könnt ihr mich nicht dabei helfen, einen Lösungsansatz zu finden?!
Das Textfile kann z.B. so aussehen (Ich habe hier per Hand die if-else-endif eingerückt, der Übersicht halber. Normalerweise steht alles untereinander)
Hier mal mein bisheriger Code (zum 1000sten mal geändert, aber leider trotzdem nicht korrekt; vielleicht ist´s als Ansatz zu gebrauchen?):
Ich vermute mal ganz stark, dass meine Zuweisungen (true/false) zur Variable ifcheck nicht recht stimmen?! Mir fällt jetzt aber auch kein anderer Ansatz ein.
Wie könnte ich sonst noch vorgehen, um das zu lösen bzw. das vorhandene ergänzen?
Vielen Dank und Gruß.
ich melde mich nochmal bezüglich if-els-endif in einem Textfile erkenne...
Ich habe ein Textfile, welches ich zeilenweise durchlaufe. Hierbei will ich die darin enthaltenen if-(else)-endif Strukturen erkennen. Diese will ich dann in ein neues Textfile schreiben, aber es soll dabei z.B. der Inhalt vom Else-Zweig nicht mit zurückgeschrieben werden, wenn die If-Bedingung TRUE ist! Das Prüfen der if-Bedingung ist hier nicht von Bedeutung - das klappt bereits.
Ich grübel nun schon ewig über einem geeigneten Algorithmus - aber bisher wollte nichts zu 100% klappen. Könnt ihr mich nicht dabei helfen, einen Lösungsansatz zu finden?!
Das Textfile kann z.B. so aussehen (Ich habe hier per Hand die if-else-endif eingerückt, der Übersicht halber. Normalerweise steht alles untereinander)
Code:
IF <Bedingung>
textzeile1
if <Bedingung>
textzeile2
if <Bedingung>
textzeile3
endif
else
textzeile4
endif
textzeile5
ELSE
textzeile6
if <Bedingung>
textzeile7
else
textzeile8
endif
textzeile9
ENDIF
Hier mal mein bisheriger Code (zum 1000sten mal geändert, aber leider trotzdem nicht korrekt; vielleicht ist´s als Ansatz zu gebrauchen?):
Code:
boolean ifcheck;
BufferedReader buff = new BufferedReader(new FileReader(path + "if-else-endif.txt"));
//jede Zeile durchgehen
while ( (line = buff.readLine()) != null) {
if( line.startsWith("IF") | line.startsWith("if") ){
...
//analysiert IF-Bedingung und liefert TRUE bzw. FALSE zurück - das funktioniert
ifcheck = berechnenIf(<meine Parameter>);
//IF gefunden
if( ifcheck == true){
ifcheck = true;
}else if(ifcheck == false){
ifcheck = false;
}
strBuffer.append(line + "\n");
//ELSE gefunden
else if( line.startsWith("ELSE") | line.startsWith("else") ){
if(ifcheck == true && ifcounter>elsecounter){
ifcheck = false;
}else if(ifcheck == false){
ifcheck = true;
}
strBuffer.append(line + "\n");
}
//ENDIF gefunden
else if( line.startsWith("ENDIF") | line.startsWith("endif") ){
strBuffer.append(line + "\n");
}
//hier jetzt alle Zeilen in den Buffer; nicht erfüllte If- oder Else-Zweige sollen ausgelassen werden
else if(ifcheck == true){
strBuffer.append(line + "\n");
}
}
//schreibt Zeilen in neues Textfile
BufferedWriter buff2 = new BufferedWriter(new FileWriter(path + "final.txt"));
buff2.write(strBuffer.toString());
buff2.close();
Wie könnte ich sonst noch vorgehen, um das zu lösen bzw. das vorhandene ergänzen?
Vielen Dank und Gruß.