Akzeptiert das zweite replaceAll nicht

ayoooo

Mitglied
Hallo Freunde bin noch immer an meinem Java Code der alle kommas löschen soll und nur diese "," und diese },{ doch bestehen lassen soll, aber leider erhalte ich ständig die Fehlermeldung, hat jemand einen tip

Java:
   import java.io.*;

   public class converter{
	   
   
   public static void main(String[] args) throws IOException {
	   try {

	        BufferedReader br = new BufferedReader(
	                new FileReader("C:/Users/Sei_Erfolgreich/Desktop/convert.txt"));
	        String zeile;

	        try {
	            File newTextFile = new File("C:/Users/Sei_Erfolgreich/Desktop/convert2.txt");
	            FileWriter fw = new FileWriter(newTextFile);
	            while ((zeile = br.readLine()) != null) {
	                zeile = zeile.replaceAll("\",\"", "\uffff").replaceAll(",",
	                        "").replaceAll("\uffff", "\",\"");
	                System.out.println(zeile);
	                fw.write(zeile);
	            }


	            fw.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    } catch (FileNotFoundException e1) {
	        e1.printStackTrace();
	    }
   
   }

wenn ich es ausführe erhalte ich diese Fehlermeldung:"
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 3
"},"{"

hab mir Reg expressions angeschaut, aber bin daraus nicht schlau geworden, hat jemand vielleicht einen tip?
 
Das Problem ist, dass du eine Klammer öffnest, die du nicht schließt, sofern ich die Sache richtig verstehe.

Ich hab solch ein Problem gehabt, nicht die , zu ersetzen, sondern die geschweifte Klammer als Teil eines variablen Strings.
Habe mir geholfen, sozusagen eine Brücke gebaut, in dem ich zunächst die Klammer per replaceAll(Pattern.quote("{"),"-~") bzw. } nach ~- ersetzt habe. Kannst auch +~ für Klammer auf und -~ für Klammer zu verwenden.
Diese Zeichen lassen sich jederzeit im String verarbeiten und am Ende wieder zurück ersetzen. Hoffe, ich konnte etwas helfen.
 

ayoooo

Mitglied
Ich wollte die ja nur nicht entfernen, da es sich um eine datenbank txt handelt, und wenn ich die kommas zwischen den geschweiften klammern entferne, kann ich es nicht mehr in excel öffnen, bzw die reihentrenner fehlen dann.

Aber danke für den tip
 

ayoooo

Mitglied
Habs mal so probiert

Java:
  .replaceAll("\uffff", "},{")
              .replaceAll("},{", "\uffff");

erhalte aber trotzdem eine fehlermeldung

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 1
},{
 

ayoooo

Mitglied
habs jetzt mal so probiert

Java:
.replaceAll("\uffff", "},{")
              .replaceAll("},{", "\uffff");


aber das akzeptiert er auch nicht wirft wieder die gleiche fehlermeldung aus
 
Dein Text im Eingang liegt etwa so vor:
{Text1},{Text2}","{Text3},{Text4}

?

Und raus kommen soll

{Text1},{Text2}{Text3},{Text4}


?

[Java]
String in = "{Text1},{Text2}\",\"{Text3},{Text4}";
String out;
out = in.replaceAll("\",\"", "\uffff");

System.out.println("In: "+in);
System.out.println("Out: "+out);
[/code]


Ausgabe:
In: {Text1},{Text2}","{Text3},{Text4}
Out: {Text1},{Text2}￿{Text3},{Text4}

Oder verstehe ich falsch?
 

ayoooo

Mitglied
Bei der ausgabe sieht das genau so aus, nur das die Kommas nach den geschweiften also zwischen denen auch gelöscht werden.

Die mit anführungsstrichen die bleiben bestehen.
 

Harry Kane

Top Contributor
Statt deine replaceAll´s einfach hintereinander zu klatschen, und dich dann zu wundern, warum das Ergebnis nicht so ist wie erwartet, hättest du dir nach jedem replaceAll das Zwischenergebnis mal anschauen sollen. Dann wäre dir aufgefallen wo du etwas machst, was du gar nicht machen wolltest.
Vielleicht ist das hier ja nützlich:
Java:
public class RegexTest {
    public static void main(String[] args){
        String original = "Test\",\"Test,Test},{";
        System.out.println(original);
        String kopie = original.replaceAll("\\},\\{", "##1##").replaceAll("\",\"", "##2##").replaceAll(",","");
        System.out.println("Alle ',' eliminiert: " + kopie );
        kopie = kopie.replaceAll("##1##","},{").replaceAll("##2##","\",\"");
        System.out.println("Alle Hilfsstrings wieder entfernt: " + kopie );
    }
}
 

ayoooo

Mitglied
Habs übernommen für mein Programm, aber trotzdem löscht der die bei mir wieder

Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class FileWrite{
public static void main(String[] args) throws IOException {
	   try {

	        BufferedReader br = new BufferedReader(
	                new FileReader("C:/Users/Sei_Erfolgreich/Desktop/convert.txt"));
	        			String zeile;
	        try {
	            File newTextFile = new File("C:/Users/Sei_Erfolgreich/Desktop/convert3.txt");
	            FileWriter fw = new FileWriter(newTextFile);
	            while ((zeile = br.readLine()) != null) {
	                zeile = zeile.replaceAll("\\},\\{", "##1##").replaceAll("\",\"", "##2##").replaceAll(",","");
	  	              zeile = zeile.replaceAll("##1##","},{").replaceAll("##2##","\",\"");
	  	              System.out.println(zeile);
	                fw.write(zeile);
	            }
	             fw.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    } catch (FileNotFoundException e1) {
	        e1.printStackTrace();
	    }
		}
}
 

Joose

Top Contributor
Habs übernommen für mein Programm, aber trotzdem löscht der die bei mir wieder

Den Ratschlag von Harry Kane hast du bewusst nicht beachtet? Nach jedem replaceAll dir das Ergebnis ausgeben zulassen, damit du siehst was passiert ist?!

Du hast einen Fehler und willst ihn lösen, also versuche so viele Informationen und Zwischenschritte zu machen wie nur möglich und notwenig. Danach kannst du den Code immer noch optimieren!
 
Zuletzt bearbeitet:

ayoooo

Mitglied
Java:
package ayhan;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class FileWrite{
public static void main(String[] args) throws IOException {
	   try {

	        BufferedReader br = new BufferedReader(
	                new FileReader("C:/Users/Sei_Erfolgreich/Desktop/convert.txt"));
	        			String zeile;
	        try {
	            File newTextFile = new File("C:/Users/Sei_Erfolgreich/Desktop/convert3.txt");
	            FileWriter fw = new FileWriter(newTextFile);
	            while ((zeile = br.readLine()) != null) {
	                String kopie = zeile.replaceAll("\\},\\{", "##1##").replaceAll("\",\"", "##2##").replaceAll(",","");
	                kopie = kopie.replaceAll("##1##","},{").replaceAll("##2##","\",\""); 
	               
	  	              System.out.println(kopie);
	                fw.write(kopie);
	            }
	             fw.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    } catch (FileNotFoundException e1) {
	        e1.printStackTrace();
	    }
		}
}


Trotzdem löscht das Programm die Kommas zwischen den geschweiften Klammern
 

Joose

Top Contributor
Java:
	                String kopie = zeile.replaceAll("\\},\\{", "##1##").replaceAll("\",\"", "##2##").replaceAll(",","");
	                kopie = kopie.replaceAll("##1##","},{").replaceAll("##2##","\",\""); 
	               
	  	              System.out.println(kopie);


Trotzdem löscht das Programm die Kommas zwischen den geschweiften Klammern

Schön du hast 5x"replaceAll" .... speicherst 1x einen Zwischenschritt gibst diesen aber nicht aus.
Mach für jedes "replaceAll" eine eigene Zeile und gib das Zwischenergebnis immer aus, so solltest du erkennen bei welchen "replaceAll" der Fehler passiert
 

ayoooo

Mitglied
Habs eben probiert aber führt irgendwie zu nix

Java:
package ayhan;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class FileWrite{
public static void main(String[] args) throws IOException {
	   try {

	        BufferedReader br = new BufferedReader(
	                new FileReader("C:/Users/Sei_Erfolgreich/Desktop/ads.txt"));
	        			String zeile;
	        try {
	            File newTextFile = new File("C:/Users/Sei_Erfolgreich/Desktop/convert4.txt");
	            FileWriter fw = new FileWriter(newTextFile);
	            while ((zeile = br.readLine()) != null) {
	                String kopie = zeile.replaceAll("\\},\\{", "##1##").replaceAll("\",\"", "##2##").replaceAll(",","");
	                System.out.println(zeile);
	                kopie =zeile.replaceAll("##1##","},{").replaceAll("##2##","\",\""); 
	                
	               
	  	              System.out.println(kopie);
	             
	                System.out.println(zeile);
	                fw.write(zeile);
	            }
	             fw.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    } catch (FileNotFoundException e1) {
	        e1.printStackTrace();
	    }
		}
}

Also gar kein komma wird entfernt gerade
 

Harry Kane

Top Contributor
Funktioniert das replaceAll bei einem Beispielstring, den du nicht aus der Datei einliest, sondern fest im Programm vorgibst?
Wie viele sysouts sind du in der Konsole, die durch die Zeile System.out.println(zeile); erzeugt werden?
Lass dir mal den Originalinhalt der Zeile vor dem replaceAll ausgeben. Vielleicht geht dir dann ein Licht auf.
 

ayoooo

Mitglied
das komische ist, also alle kommas bleiben drinne aber, aber die ganze struktur der datei geht flöten, ich kann das in csv exportieren, aber obwohl die kommas noch drinne sind, macht der mir daraus also das programm, eine lange zeile, und nicht gewollt die über 1000 zeilen daten
 

Harry Kane

Top Contributor
Also ich bin raus.
Du hast keine Frage beantwortet, zum wiederholten mal Tipps offenbar nicht befolgt, stattdessen kommt jetzt auf einmal was ganz neues, was nicht so ist wie erwartet.
Ich bin mit meinem Latein am Ende.
 

ayoooo

Mitglied
Tut mir leid, hat sich gar nichts verändernt es ist immer die gleiche ausgabe, egal wo ich mir das ausgeben lasse, und wenn ich mal probiert habe es zu öffnen, wie gesagt, sind die kommas noch da, aber die struktur geht mir flöten !

aber trotzdem danke für die versuche
 

ayoooo

Mitglied
LEUTE LEUTE !!!!! ES LÄUFT !!!!! WARUM MIR DAS GANZE ZERSCHOSSEN WURDE IST EIN GRUNDLEGENDES PROBLEM UND DAFÜR GIBT ES fw.write(System.getProperty("line.separator")); :DDDDD


ALSO DIE LÖSUNG DANKE EUCH ALLEN !!!!!

Java:
package txtconverter;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
 
public class FileWrite{
public static void main(String[] args) throws IOException {
	   try {
 
	        BufferedReader br = new BufferedReader(
	                new FileReader("C:/Users/Sei_Erfolgreich/Desktop/text.txt"));
	        			String zeile;
	        try {
	            File newTextFile = new File("C:/Users/Sei_Erfolgreich/Desktop/convert4.txt");
	            FileWriter fw = new FileWriter(newTextFile);
	            while ((zeile = br.readLine()) != null) {
	            	  String kopie = zeile.replaceAll("\\},\\{", "##1##").replaceAll("\",\"", "##2##").replaceAll(",","");
	                  
	                  kopie = kopie.replaceAll("##1##","},{").replaceAll("##2##","\",\"");
	                fw.write(kopie);
	               fw.write(System.getProperty("line.separator"));
	            }
	             fw.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    } catch (FileNotFoundException e1) {
	        e1.printStackTrace();
	    }
		}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
H Codewars akzeptiert Lösung nicht Java Basics - Anfänger-Themen 29
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
B Email versand - aber akzeptiert auch falscher Username und Passwort??? Java Basics - Anfänger-Themen 1
G Datentypen Eclipse akzeptiert 'long' nicht Java Basics - Anfänger-Themen 2
P float Eingabe wird nicht akzeptiert, obwohl Variable als float deklariert Java Basics - Anfänger-Themen 2
K Warum akzeptiert der Compiler mein Objekt nicht ? Java Basics - Anfänger-Themen 3
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
N ArrayList: Das zweite Element wird zur Liste nicht eingefügt nach dem zweiten request. Java Basics - Anfänger-Themen 3
H Wie kann ich jedes zweite Array Wert ausgeben lassen?? Java Basics - Anfänger-Themen 6
A Mit javac zweite Datei compilieren ohne Erste erneut zu compilieren? Java Basics - Anfänger-Themen 7
A OOP Arraybefüllung mit for-Schleifen Problem: Umsprung in die zweite Zeile Java Basics - Anfänger-Themen 11
H RandomAccesFile zweite Zeile schreiben Java Basics - Anfänger-Themen 4
R Image laden die Zweite Java Basics - Anfänger-Themen 4
R Erste und zweite Stelle einer Eingabe auslesen Java Basics - Anfänger-Themen 2
F Mehrdimensionales Array zweite Diemnsion später Konstruieren? Wie Java Basics - Anfänger-Themen 2
U zweite Frage: return, wichtig Java Basics - Anfänger-Themen 8
S Nachricht von Console auf Screen wiedergeben die zweite:-) Java Basics - Anfänger-Themen 7
F Zweite Graphics-Methode wird nicht ausgeführt Java Basics - Anfänger-Themen 4
U Sonderzeichen die zweite Java Basics - Anfänger-Themen 16
S Zahlenraten die zweite Java Basics - Anfänger-Themen 3
K Eclipse - zweite Konsole? Java Basics - Anfänger-Themen 2
ven000m Rauten "Stern" zeichnen, hälfte habe ich zweite? Java Basics - Anfänger-Themen 2
K Neuronales Netz in Java ... die zweite Java Basics - Anfänger-Themen 3
K Wörter zählen auf Internetseiten... die zweite Java Basics - Anfänger-Themen 4
S Klappe die Zweite für Heute Java Basics - Anfänger-Themen 2
A Fehler beim Lesen von Objekten aus Datei (die zweite) Java Basics - Anfänger-Themen 2
Jxhnny.lpz replaceall exemple Java Basics - Anfänger-Themen 5
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
C replaceAll() Methode Java Basics - Anfänger-Themen 4
Tommy135 Schlüsselworte ReplaceAll() Java Basics - Anfänger-Themen 9
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
K ReplaceAll Java Basics - Anfänger-Themen 5
L ReplaceALL - Fehlersuche Java Basics - Anfänger-Themen 11
HoloYoitsu Datentypen replaceAll() mit regex? Java Basics - Anfänger-Themen 5
F String.replaceAll() funktioniert nicht richtig oder habe ich den falschen Regex?? Java Basics - Anfänger-Themen 3
F Methoden replaceAll (regex) HTML Java Basics - Anfänger-Themen 3
C Probleme mit replaceAll Funktion Java Basics - Anfänger-Themen 9
K Probleme mit String.replaceAll() Java Basics - Anfänger-Themen 4
V ReplaceAll mag net Java Basics - Anfänger-Themen 2
S Methoden replaceAll CASE_INSENSITIVE Java Basics - Anfänger-Themen 7
S String dauerhaft mit replaceAll verändern Java Basics - Anfänger-Themen 3
T \n wird als \\n aus File eingelesen - replaceAll funktioniert nicht Java Basics - Anfänger-Themen 8
B Frage zu replaceAll Java Basics - Anfänger-Themen 18
D String.replaceAll("{username}", to.getUserName()); funzt nicht Java Basics - Anfänger-Themen 4
C String replaceAll Java Basics - Anfänger-Themen 4
M replaceAll \ in \\ Java Basics - Anfänger-Themen 5
chik replaceall von doppelbackslash Java Basics - Anfänger-Themen 5
H String.replaceAll Problem Java Basics - Anfänger-Themen 2
G replaceAll funktioniert nicht mit Dateien Java Basics - Anfänger-Themen 3
F replaceAll / GROSS klein Java Basics - Anfänger-Themen 3
G Frage zu replaceAll und regex Java Basics - Anfänger-Themen 3
S string replaceAll regex Java Basics - Anfänger-Themen 2
M replaceAll mit Java 1.3 Java Basics - Anfänger-Themen 4
M replaceAll mit Java 1.3 Java Basics - Anfänger-Themen 2
F regex bei replaceAll und backslash ersetzen geht nicht. Java Basics - Anfänger-Themen 1
B replaceAll Methode Java Basics - Anfänger-Themen 2
P Ausgabe nach replaceALL Java Basics - Anfänger-Themen 5
H replaceAll und RegEx Java Basics - Anfänger-Themen 3
T replaceAll Java Basics - Anfänger-Themen 8
B replaceAll-Funktion Java Basics - Anfänger-Themen 3
B replaceAll macht nix! :-( Java Basics - Anfänger-Themen 4
F ReplaceAll und Slash Java Basics - Anfänger-Themen 9
G Massenersetzungen am besten auch mit replaceAll? Java Basics - Anfänger-Themen 3
P replaceAll Problem mit Backslash Java Basics - Anfänger-Themen 1
S JTextArea.ReplaceAll() schneidet Zeichen weg Java Basics - Anfänger-Themen 3
T Matcher.replaceAll Java Basics - Anfänger-Themen 2
H Klammern bei replaceAll-Methode Java Basics - Anfänger-Themen 3
R replaceall() funktioniert nicht richtig Java Basics - Anfänger-Themen 7
A replaceAll und Leerzeichen Java Basics - Anfänger-Themen 2
O ReplaceAll bei Strings Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben