String löschen und neu sortieren

anfaengerin

Grünschnabel
Hi @ all!

Ich habe da ein kleines Problem. Mittels "BufferedReader" lese ich mir eine *.txt Datei in eine "JTextArea" Zeilenweise ein. Das klappt alles auch wunderbar. Heraus kommt dabei ein beliebig langer Text, wie z.B.:

..............
..............
2.132213,21.213240,"2134|Irgendetwas|Irgendetwas Irgendetwas $0x999999$"
..............
..............

Mein Problem ist nun, dass ich gern die Zeichenkette zwischen $...$, also im obigen Beispiel $0x999999$ löschen würde inklusive der "$" Zeichen. Die Hex-Zahl zwischen $...$ ist aber in jeder Zeile unterschiedlich nur die "$" Zeichen bleiben gleich. Des weiteren müsste die Zahl "2134| in [2134] umgewandelt werden, wobei sich die Zahlen in jeder Zeile unterschiedlich sind, sie beginnt lediglich immer mit " und endet mit |.

Vielen Dank schon mal im voraus für Eure Vorschläge.

MfG,

Sandy
 
Du könntest jede Zeile vor der Ausgabe in einen String packen und diesen dann nach bestimmten Kriterien durchsuchen.
Z.B. suchst du nach dem Index von dem ersten $, dann nach dem von dem zweiten $. Dann kannst du mit
String b = a.subSequence(i1,i2);
die Sequenz ohne $xxxxx$ bilden.

Mit a.replace(oldChar, newChar) könntest du dann bestimmte Zeichen ersetzen.
 
Vielen Dank für die Lösungsvorschläge!

@MeinerEiner

Dein Code funktioniert so noch nicht komplett, da die Länge der Hexzahl hinter "0x" nicht konstant ist. Wie kann ich das noch ändern, dass beliebig große Hexzahlen auch noch mit berücksichtig werden?

Vielen Dank!

MfG

Sandy
 
Das Problem liegt nicht in der länge, sondern das ich vergessen habe, dass in Hex Zahlen ja auch buchstaben vorkommen... mal gucken ob mir was besseres einfällt...
 
So, das sollte funktionieren:
Code:
String t = "ase$0xA4$asd$0x63458$!QA$1x346A23$";
String s = t.replaceAll("[$]0x[\\da-fA-F]*?[$]", "");
Ausgabe:
aseasd!QA$1x346A23$

*grüssle*
MeinerEiner
 
@MeinerEiner

Irgendwie funktioniert das immer noch nicht bei mir.

PHP:
String bereinigen(String s){
      String temp = s;
      if(s.indexOf("$")> -1)temp = s.replace("[$]0x[\\da-fA-F]*?[$]", "");
      return temp;
  }

  class buttonwaechter implements ActionListener{
    public void actionPerformed (ActionEvent e){
    	button = e.getSource();
      if(button==oeffnen){
        String lesen;        
        if(jfilechooser.showOpenDialog(contentpane)==0){
        	textarea.setText("");
        	file = jfilechooser.getSelectedFile(); 
        	textfield_oeffnen.setText(""+file);
          try{              
        	bufferedreader = new BufferedReader(new FileReader(file)); 
        	int i = 0;
        	while((lesen=bufferedreader.readLine())!=null){
        		if(i <= 6){
        			lesen = "";       			
        		}
        		else {
        			lesen = bereinigen(lesen);
        			textarea.append(lesen+"\n");
        		}
        		i++;
            }
            bufferedreader.close();			
          }catch(Exception ex1){System.out.println(ex1);} 
        }
        else{
          JOptionPane.showMessageDialog(contentpane,"Keine Datei zum Öffnen gewählt!","ÖFFNEN",JOptionPane.ERROR_MESSAGE);  
        }
      }

Was mache ich denn da schon wieder falsch?

MfG

Sandy
 
Mag sein, dass ich ein Fehler gemacht habe, allerdings sehe ich nicht wo der sein könnte...

Poste mal den String, der nicht funktioniert...

Edit:
Hier mal ein Workaround, um "Zahl| druch [Zahl] zu ersetzen:
Code:
StringBuffer b = new StringBuffer(stringtoEdit);
    		while(true){
    			int index1 = s.indexOf('"',index1);
    			int index2 = s.indexOf("|", index1);
    			if((index2 ==-1)||(index1==-1)) break;
    			String sub = s.substring(index1+1, index2);
    			try{
    				int i = Integer.parseInt(sub);
    				b.replace(index1, index2+1, "["+sub+"]");
    			}
    			catch(NumberFormatException e){
    			}
    			index1 = index2;
    		}

    		System.out.println(b);
 
Zuletzt bearbeitet von einem Moderator:
WOW VIELEN DANK!

Genau so funktioniert es! Ich müsste nur noch lesen können!
Hast Du auch noch eine Lösung für das andere Prob parat,so das ich die Zahl "2134| in [2134] umgewandeln kann, wobei sich die Zahlen in jeder Zeile unterscheiden, aber immer mit " beginnen und mit | enden?

MfG,

Sandy
 
Zurück