• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Java - Datei oeffnen und bestimmte Zeichen loeschen..

Keepers

Advanced Hacker
Hi,

ich moechte moechte eine Textdatei oeffnen, die einen Inhalt nach gleichem Schema hat:

(xx.xxMb)

Die folgenden Zeichen: '( Mb )' sollen geloescht werden und nur noch die Zahl in eine neue Datei geschrieben werden.

Beispiel:

(100.2Mb) -> 100.2

Das oeffnen der Datei habe ich bis jetzt hinbekommen, doch weiß ich nicht wie ich diese Zeichen entfernen kann und dann den neuen Wert abspeichern kann. (Den Vorgang zum Speichern kriege ich hin, nur wo krieg ich den Wert her?)

Hier der Quellcode:
Code:
import java.io.*;

public class analyzer
{
 private String fileName;

 public static void main(String args[])
 {
 analyzer a1 = new analyzer(args);
 }

 public analyzer(String param[])
 {
 if(param.length != 0) { fileName = param[0]; getTextFile(fileName);}
 
 }


 public void getTextFile(String name)
 { String col = "";
 try
    	{
   	FileReader i_stream = new FileReader(name);
   	BufferedReader input = new BufferedReader(i_stream);
	while((col = input.readLine()) != null)
	{ System.out.print(""+col); 
   	

	}
	catch(IOException e) { System.out.println("I/O Fehler: "+e); }
 }
}

Ich hoffe ihr koennt mir helfen.
 

TeXpert

Guru
oh, gott, ist java lang her ;)

gibts da keine Regex-Filterkriterien? wenn nein, dann auf die gute alte methode -> str = str.substr(1,str.len()-3) oder so ähnlich ;) bitte nachlesen
 
OP
K

Keepers

Advanced Hacker
Regex-Filterkriterien sagen mir nichts, aber ich werd mal nach deinen Angaben googlen ;)
 
OP
K

Keepers

Advanced Hacker
Ich habe nichts brauchbares beim googlen gefunden, ich glaube ich suche falsch..

Vielleicht kannst du mir eine Art "Ueberbegriff" geben nachdem ich weiter suchen kann?

Code:
s/(\(.*\)MB)/\1/g
Sagt mir uebrigens gar nichts...
 

TeXpert

Guru
googeln ist nicht schwer ;)

also ein "java regex" zeigt mir das heir: http://www.google.de/search?hl=de&q=java+regex&btnG=Suche&meta=

der erste LInk führt direkt zu einem Tutorial: http://java.sun.com/docs/books/tutorial/extra/regex/

das Konstrukt
Code:
s/(\(.*\)MB)/\1/g
ist ein einfacher Ersetzungsausdruck, der die öffnende Klammer und ein MB) am Ende enfernt, damit kann man das wunderbar in der bash mit sed oder in perl machen:
Code:
$ echo "(1234.56MB)" | sed -e 's/(\(.*\)MB)/\1/g'
1234.56

wobei ich zugeben muss, dass ich jetzt nicht weiß, ob java.regex einen Replace implementiert hat...

aber ich hatte Dir ja auch noch den einfachen Weg über substr angeboten :)
 
Oben