使用Scanner类与Java来避免看到引号

这是我给出的原始数据的样本。 我需要把特定的部分放在Excel电子表格中。 在我开始之前,我想parsing这个信息,以便在电子表格中轻松pipe理。 其中一个需要的信息是vector编号。 恩。 “vector号码”“1701”。 对于我的生活,我似乎无法用这样的方式使用扫描仪类,我可以检索这个信息,因为它在双引号。 这是引号中的数字,并将其保留为整型值。 在此先感谢大家

-2-2015 0:16 PM – 语音报告系统名称:Commercial – l usa e 1797747

“”“”“”“”“”“公告”“”“”“”“”“”Vector“”Vector Number“”1701“”Step“”8“

9-2-2015 0:16 PM – 数据导出

9-2-2015 0:16 PM – 语音报告系统名称:Commercial – l usa e 1797789

“”“”“”“”“”“”公告“”“”“”“”“”“Vector”“Vector Number”“1701”“Step”“26”

9-2-2015 0:16 PM – 数据导出

9-2-2015 0:16 PM – 语音报告系统名称:Commercial – l usa e 1797745

“”“”“”“”“”“公告”“”“”“”“”“”Vector“”Vector Number“”1701“”Step“”3“

9-2-2015 0:16 PM – 数据导出

有可能会排除引号,但是,可以使用Scanner的正则expression式function来改变它的工作方式,例如

 String text = "\"\" \"\" \"\" \"\" \"\" \"Announcement\" \"\" \"\" \"\" \"\" \"Vector\" \"Vector Number\" \"1701\" \"Step\" \"8\""; String pattern = "([\"'])(?:(?=(\\\\?))\\2.)*?\\1"; Scanner scanner = new Scanner(text); while (scanner.hasNext(pattern)) { System.out.println(scanner.next(pattern)); } 

哪个输出类似…

 "" "" "" "" "" "Announcement" "" "" "" "" "Vector" 

这将是一个简单的事情,只是使用String#replaceAll从每个结果中删除引号

我build议你使用像https://commons.apache.org/proper/commons-csv/这样的CSV库。 它允许你改变分隔符。

还有许多其他图书馆可供select 。

如果这是真实的数据,可能会遇到很多的情况。 处理这些问题可能很耗时。

假设所有的数据都是这样格式化的,你可以先用Scanner.nextLine()获得一整行数据,然后把它存储在一个string中。 接下来你可以使用String.indexOf()来获得你想要的数字。 例如: String input = yourScanner.nextLine(); int pos = input.indexOf("Vector Number"); int result = String.substring(pos + 16, pos +20); String input = yourScanner.nextLine(); int pos = input.indexOf("Vector Number"); int result = String.substring(pos + 16, pos +20); 这是你想要的一个非常粗糙的实现,但你明白了。 祝你好运!