2015-05-03 179 views
0

我想讀從一個文本文件,它看起來像話時跳過一個字:如何使用掃描儀

"A","ABILITY","ABLE","ABOUT","ABOVE","ABSENCE","ABSOLUTELY","ACADEMIC","ACCEPT","ACCESS","ACCIDENT","ACCOMPANY", ... 

我使用split("\",\"")讀的話,所以我讓他們在矩陣中。不幸的是我不能跳過讀取第一個引號,開始我的.txt文件,所以在我的控制檯我有一個結果:

"A 
ABILITY 
ABLE 
ABOUT 
ABOVE 

你知道我怎麼能跳過第一個引號?我正在嘗試

Scanner in = new Scanner(file).useDelimiter("\""); 

parts[0].replace("\"", "");,但它不起作用。

package list_1; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class exercise { 
    public static void main(String[] args) throws FileNotFoundException{ 
     File file = new File("slowa.txt"); 
     Scanner in = new Scanner(file).useDelimiter("\"");  //delimiter doesn't work! 

     String sentence = in.nextLine(); 
     String[] parts = sentence.split("\",\""); 
     parts[0].replace("\"", "");     //it doesn't work! 

     for (int i=0; i<10 ; i++){ 
      System.out.println(parts[i]); 
     } 
    } 
} 

回答

4

字符串是不可變的,這意味着你不能改變它們的狀態。因爲replace不會更改它被調用的字符串,但會創建一個新的替換數據,您需要將其存儲在某處(可能在引用其中存儲的原始字符串時)。因此,而不是

parts[0].replace("\"", ""); 

你需要使用

parts[0] = parts[0].replace("\"", ""); 

無論如何設置分隔符,使用nextLine沒有多大意義,因爲這種方法是尋找行分隔符(如\n\r\r\n) ,而不是你的分隔符。如果您想讓掃描儀使用分隔符,請使用其next()方法。

您也可以使用不同的分隔符代表"","。您可以使用以下正則表達式創建一個"(,")?

所以,你的代碼可能看起來像

Scanner in = new Scanner(file).useDelimiter("\"(,\")?"); 
while(in.hasNext()){ 
    System.out.println(in.next()); 
} 
+0

現在沒事了,謝謝! :) –

-3

您可以使用此正則表達式。它適用於我:

Scanner in = new Scanner(file).useDelimiter("\"(,\")?"); 
while(in.hasNext()){ 
    System.out.println(in.next()); 
} 
+1

該代碼與[接受的答案](http://stackoverflow.com/a/30020423/1402846)中的代碼完全相同。 – Pang