1

フルネーム (名と姓) 用と ID 番号用の 2 つの列を持つファイルがあります。このファイルには、「名前」と「ID」を含むヘッダーもあり、ヘッダーのすぐ下とすべてのエントリの上に、スペースで区切られたダッシュの行があります。次のようになります。

NAME        ID
------      ------
John Snow   0001
Tyrion      0002

このダッシュの行をスキップできるようにしたいのですがScanner.skip()、無駄に使用しようとしました。while ループ内で、列間のスペースを分割する正規表現と、列ヘッダーをバイパスする if ステートメントを既に設定しています。

4

4 に答える 4

1

BufferedReaderスキャナーの代わりに使用することもできます。次に、これらのダッシュをスキップするために使用できるreadLine()メソッドがあります。

BufferedReader reader = new BufferedReader(... your input here...);
String s;
while((s=reader.readLine())!=null) {
   if (s.startWith("--")
       continue;
   // do some stuffs

}

編集:行にダッシュとスペースのみが含まれていることを確認したい場合は、次を使用できます。

s.matches("[\\- ]+")

これは、行にダッシュと空白が含まれている場合にのみ一致します

于 2012-04-20T09:40:22.390 に答える
0

すでにスキャナーを使用している場合は、これを試してください:

String curLine;

while (scan.hasNext()){
    curLine = scan.readLine();
    if(!curLine.startsWith("----") {
        .... //whatever code you have for lines that don't contain the dashes

    }
}
于 2012-07-01T10:26:14.143 に答える
0

最初の 2 行が常に静的な場合は、これを試してください。

reader.readLine(); //reads first line, Name ID and does nothing
reader.readLine(); //reads second line, ---- ---- and does nothing
//start scanning the data from now.
while(!EOF){
String line = reader.readLine();
//process the data.
}

このようにして、すべての行を「--」と比較するオーバーヘッドを排除できます。

于 2012-04-20T09:46:52.347 に答える
0
FileReader fileReader = new FileReader(//File with Exension);

Scanner fileScan = new Scanner(fileReader);

fileScan.useDelimiter("\\-")

while(fileScan.hasNext()){

   //Store the contents without '-'
   fileScan.next();
}

お役に立てれば

于 2012-04-20T09:56:22.257 に答える