2016-06-15 111 views
-3

嘗試使用掃描儀來分析從下列文件掃描儀解析...JAVA - 用引號和逗號

「狗」,「貓」,「馬」,「大象」,「海豚」

...有它的輸出如下:

狗 貓 馬 大象 海豚

什麼scanner.useDelimiter正則表達式可以做到這一點?也許我沒有走上正軌。獲取這些令牌的最佳方式是在每個令牌之間沒有逗號,並且每個令牌上沒有引號?

+2

你在錯誤的軌道上。這聽起來像一個CSV文件,爲此有幾個庫可以很好地完成工作。既然你沒有提供真正的細節或代碼,我們無法真正幫助超越。 –

回答

0

我不會用Scanner對於這一點,而不是我想:

List<String> values = new ArrayList<>(); 
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) { 
    String[] data = reader.readLine().split(","); 
    for (String item : data) { 
     values.add(item.replace("\"", "")); 
    } 
} 

而且你有這些元素(只從第一行,但很容易將其擴展),在列表中values

+1

您應該將'BufferedReader'放入[tag:try-with-resources]塊以防止內存泄漏 –

+0

猜測我應該已經更清楚了。逗號可以出現在引號內。例如,「dog」,「cat」,「horse」,「dol,phin」應解析爲:dog cat horse dol,phin – Greymarch

+0

@Greymarch然後,如果數據兼容,最好使用CSV解析器。 –

0

你可能可以啓動的是設置一個掃描器來讀取文檔,如果下一個字符串是'''或'',則使用scanner.hasNext()測試if語句並通過他們(在「你可以添加一個空格)」,但是如果掃描儀按照字母字符進行拾取,則打印出字符。對於某些源代碼,這裏有一個關於如何解析文本文件或字符串的四種解釋的鏈接。

http://www.javapractices.com/topic/TopicAction.do?Id=87