2016-06-29 14 views
-1

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.

+1

@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

+0

@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

+0

@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

Antwort

2

Anstatt mit scanner.next(), scanner.nextLine() verwenden, die die ganze Zeile zurückgibt, können Sie dann die Zeile mit string.split("\\|") aufgeteilt oder ähnlich ein String-Array der Elemente in der Leitung zu bekommen, teilen Sie mit dem „|“ Trennzeichen.

+0

Jetzt behoben, ein "\" verpasst, danke, dass du es entdeckt hast. – iciaran

Verwandte Themen