首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中使用Scanner类以避免看到引号

在java中使用Scanner类以避免看到引号
EN

Stack Overflow用户
提问于 2015-09-04 10:10:33
回答 3查看 35关注 0票数 0

这是我得到的原始数据样本。我需要把特殊的零件放在excel电子表格中。在我开始之前,我想解析这些信息,以便在放入电子表格时易于管理。需要的信息之一是向量数。例如。“向量数字”"1701“。在我的生命中,我似乎不能以这样的方式使用scanner类,我可以检索这些信息,因为它在双引号中。这就是引号中的数字,并将它们保留为int值。提前感谢大家

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

“公告”向量"“向量编号"”1701“”步骤"“8”

2015年9月2日0:16 PM -数据导出

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

“公告”向量"“向量编号"”1701“”步骤"“26”

2015年9月2日0:16 PM -数据导出

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

“公告”向量"“向量编号"”1701“”步骤"“3”

2015年9月2日0:16 PM -数据导出

EN

回答 3

Stack Overflow用户

发布于 2015-09-04 10:19:23

也许可以去掉引号,但是,您可以使用Scanner的正则表达式功能来更改它的工作方式,例如

代码语言:javascript
复制
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));
}

它输出类似于...

代码语言:javascript
复制
""
""
""
""
""
"Announcement"
""
""
""
""
"Vector"

使用String#replaceAll删除每个结果中的引号将是一件很简单的事情

票数 1
EN

Stack Overflow用户

发布于 2015-09-04 10:24:07

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

这里有many other libraries to choose from

如果这是真实的数据,你可能会遇到很多转折点。处理所有这些问题可能会很耗时。

票数 1
EN

Stack Overflow用户

发布于 2015-09-04 10:19:27

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32389039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档