EDIT ------------- Scheint meine Erklärung war nicht so gut, so hier ist eine bessere von dem, was ich tun muss. Hier ist ein Beispiel-Datei (ignoriere den Raum zwischen den Zeilen):Wie Leerzeichen mit Java-Scanner-Klasse enthalten
10 = android | 156.94.34.212 | Gerät 1 | 5 | 9
15 = IOS | 134.58.48.343 | Daten | 3 | 7
Ich möchte jede Zeile analysieren. Ich muss jeden Teil der Zeile außer dem "=" und dem "|" Zeichen und die letzten 2 Zahlen sind auch irrelevant. Also die 5,9,3 und 7 brauche ich nicht. Mein Problem ist, wenn ich auf Gerät 1 stoße. Ich muss diesen Raum und die 1 speichern, kann aber nicht herausfinden, wie. Dies wäre, was ich für die erste Zeile zeigen müssen:
id = 10
device = android
ipAddress = 156.94.34.212
device = Gerät 1
Beispielcode :
Scanner scan = new Scanner(file);
while(scan.hasNextLine()){
Scanner id = new Scanner(scan.next()).useDelimiter("=");
String deviceID = id.next();
Scanner dataScan = new Scanner(id.next()).useDelimiter("[|]");
String device = dataScan.next();
String address = dataScan.next();
String deviceName = dataScan.next();
scan.nextLine();
}
Ausdruck aus der 1 in "Devic e 1 "alles andere parst richtig.
@ochi Nein, beide Fragen sind nicht verwandt. Vote zu schließen, als "unklar" oder "warum funktioniert dieser Code nicht" wäre ausreichend, da diese Frage ohne OP-Code nicht beantwortet werden kann. – Tom
@Tom Ich dachte entlang der Linien von @ iciarans Antwort -> lies die Zeile, geteilt durch die bekannten Begrenzer (aber ich artikulierte das nicht, meine schlechte) – ochi
@ochi OPs Fragen liest ein bisschen wie er das tatsächlich tut derzeit , aber deshalb ist diese Frage (zumindest für mich) unklar, weil die Ergebnisse, die er bekommt, merkwürdig sind. – Tom