2016-06-29 28 views
-1

EDIT ------------- 私の説明があまり良くないとは思われないので、ここで私がする必要のある方が良いです。ここで、例えばファイル(ライン間のスペースを無視する)である:javaスキャナクラスで空白を含める方法

10 =アンドロイド| 156.94.34.212 |デバイス1 | 5 | 9

15 = IOS | 134.58.48.343 |データ| 3 | 7

各行を解析したいと思います。私は "="と "|"を除く行の各部分を格納する必要があります。最後の2つの数字も無関係です。だから5,9,3と7私は必要ありません。私の問題は、デバイス1に出くわすときです。私はそのスペースと1を保存する必要がありますが、どのように把握することはできません。これは私が最初の行を表示するために必要なものを次のようになります。

ID = 10

デバイス=アンドロイド

ipAddressの= 156.94.34.212

DEVICENAME =デバイス1

サンプルコード:

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(); 
} 

プリントアウトが "devic e 1 "その他のものは正しく解析されます。 「|」

+1

@ochiいいえ、両方の質問は関係ありません。この質問はOPコードなしでは答えることができないため、「不明確」または「なぜこのコードは機能していない」としてクローズするのに十分でしょう。 – Tom

+0

@Tom私は@ iciaranの答えのラインに沿って考えていた - >分かりやすい区切り文字で区切られた行を読む(しかし、私はそれを完全には明示していなかった、悪い) – ochi

+0

@ochi OP質問には、しかし、それは彼が得た結果が奇妙なので、この質問が(私にとっては少なくとも)不明である理由です。 – Tom

答えて

2

むしろscanner.next()を使用するよりも、行全体を返しscanner.nextLine()を使用し、あなたはその後に分割し、ライン内の要素の文字列配列を取得するためにstring.split("\\|")または類似して行を分割することができますデリミタ。

+0

"\"を見逃してしまったので、修正しました。 – iciaran

関連する問題