2016-06-15 96 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