2016-04-12 57 views
1

我正在試圖製作一個簡單的程序來讀取文本文件並從中獲取特定的數據。在下面的代碼中,我試圖找到一個有報價的位置。所以我們可以說FILE.TXT內容是:掃描器和子字符串

aaaaaaa"bbbbb"ccccc 
ddd"ee"ffff 
g"hhhhhh"iii"gggg" 

所以我應該有引號的所有位置的數組列表(人= [7,第13,3,6,1,8,12,17])。 問題是,我似乎無法得到從文本閱讀每條線的子串。我想獲取引號內的文字。輸出應該是這樣的:

bbbbb 
ee 
hhhhhh 
gggg 

代碼:

File temp = new File("file.txt"); 
Scanner file = new Scanner(temp); 
ArrayList<Integer> al = new ArrayList<Integer>(); 
while (file.hasNext()) { 
    String k = file.next(); 
    //System.out.println(k); 
    int position = 0; 
    while (position >= 0) { 
     position = k.indexOf('"', position + 1); 
     //System.out.println(position); 
     al.add(position); 
    } 
    System.out.println(k.substring(position,position+1)); 
} 
+0

什麼是你與你的程序?,有什麼問題? –

+1

如果你想要引號內的字符串,你應該使用正則表達式 – Jens

+0

如果你的字符串中有2個以上的引用集合,帶有'Pattern'和'Matcher'的正則表達式應該很有用。任何你不使用正則表達式的原因? – TheLostMind

回答

0

如果你的罰款使用正則表達式作爲上述建議,那麼你可以這樣做(假設引號打開和關閉在同一行):

List<String> lines = Files.lines(Paths.get("files/input.txt")).collect(Collectors.toList()); 
    Pattern p = Pattern.compile("\"(.*?)\""); 
    for(String line : lines){ 
     Matcher m = p.matcher(line); 
     while(m.find()) 
      System.out.println(m.group(1).replaceAll("\"", "")); 
    } 

我希望它有幫助。