这是我给出的原始数据样本。我需要在excel电子表格中放入特殊部分。在我开始之前,我想解析这些信息,以便在放入电子表格时轻松管理。其中一个需要的信息是矢量编号。恩。 “矢量编号”“1701”。对于我的生活,我似乎无法使用扫描仪类,我可以检索此信息,因为它是双引号。这是引号中的数字,并将它们保留为int值。在此先感谢大家
-2-2015 0:16 PM - 语音系统名称报告:商业 - 美国电话1797747
“”“”“”“”“” “公告”“”“”“”“” “Vector”“Vector Number”“1701”“Step”“8”
9-2-2015 0:16 PM - 数据导出
9-2-2015 0:16 PM - 语音系统名称报告:商业 - l usa e 1797789
“”“”“”“”“” “公告”“”“”“”“” “Vector”“Vector Number”“1701”“Step”“26”
9-2-2015 0:16 PM - 数据导出
9-2-2015 0:16 PM - 语音系统名称报告:商业 - 美国电话1797745
“”“”“”“”“” “公告”“”“”“”“” “Vector”“Vector Number”“1701”“Step”“3”
9-2-2015 0:16 PM - 数据导出
答案 0 :(得分:1)
可能存在排除引号的情况,但是,您可以使用Scanner
正则表达式功能来更改其工作方式,例如
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
删除每个结果中的引号
答案 1 :(得分:1)
我建议您使用像https://commons.apache.org/proper/commons-csv/这样的CSV库。这允许您更改分隔符。
有many other libraries to choose from。
如果这是真实数据,您可能会遇到很多极端情况。处理它们可能是耗时的。
答案 2 :(得分:0)
假设所有数据都是这样格式化的,您可以先使用Scanner.nextLine()获取整行数据,然后将其存储在字符串中。接下来,您可以使用String.indexOf()来获取所需的数字。例如:
String input = yourScanner.nextLine();
int pos = input.indexOf("Vector Number");
int result = String.substring(pos + 16, pos +20);
这是你想要的非常粗略的实现,但你明白了。
祝你好运!