2016-12-06 4 views
-2

Hier ist das Problem. Ich habe einigen Text in meiner .txt-Datei, es genau so aussehen wie diese:Entfernen Sie ein bestimmtes Zeichen aus jeder Zeile einer Datei, wenn das auftritt

Bee-bee is the voice that Sheep giv- 
e. Mou-Mou is the voice that Cow gi- 
ve. Miau-Miau is the voice that Ca- 
t gives. 

Programm, das ich diese Datei benötigen lesen und verbindet Linie. Ausgang (txt.file):

Bee-bee is the voice that Sheep give. Mou-Mou is the voice that Cow give. Miau-Miau is the voice that Cat gives. 

Ich denke, dass ich so etwas wie dies tun müssen:

//Locate the file: 
File file = new File("/path/to/file.txt"); 

//Create a temporary file 
File temp = File.createTempFile("file", ".txt", file.getParentFile()); 

//String I want to remove 
String delete = "-"; 

//open the file, open the tmp file, read the file line by line and replacing signs 
for (String line; (line = reader.readLine()) != null;) { 
    // ... 
} 

//Delete the string from the line.  
line = line.replace(delete, ""); 

Hier ist ein Problem, dass es "Biene-bee" mit "beebee" in der Ausgabedatei ersetzen und das ist nicht was ich will. Ich brauche etwas Konstruktion "wenn das Zeichen ist" - "und das nächste Zeichen ist Wagenrücklauf, löschen" - "aber ich habe keine Ahnung, wie man das schreibt.

+0

Sie können einen Wagenrücklauf wie folgt in eine Zeichenfolge einfügen: '" \ r "'. Normalerweise endet eine Zeile jedoch mit einer neuen Zeile: '" \ n "'. – markspace

Antwort

1

Die Zeichenfolge, die Sie von readLine zurück erhalten, wird zu einem die ganze Linie bis zu der Zeilenvorschub-Zeichen.

dh

Bee-Biene ist die Stimme, die Schafe giv-

so alles, was Sie testen müssen, dass der letzte ist char ist - und wenn es eine Teilzeichenfolge bis zu diesem Punkt zurückgegeben wird.

Sie können die tradionellen lastIndexOf machen und substring oder endswith oder man kann den String mit einem RegexMuster von -$

Ein Beispiel ist

String line = "Bee-bee is the voice that Sheep giv-"; 
    if (line.endsWith("-")) { 
     String output = line.substring(0, line.length() -1); 
     System.out.println(output); 
     // maybe append to a StringBuilder ? 
     stringBuf.append (output); 
    } 

Dieser Teil könnte dann aufgeteilt auf einem angehängt werden StringBuilder, damit Sie die gesamte Zeichenfolge erhalten, wie Sie es möchten.

+0

Wenn diese antwort Ihren bedürfnissen entspricht, bitte antworten sie und/oder akzeptieren sie diese antwort –

Verwandte Themen