【问题标题】:How to include whitespace with java scanner class [duplicate]如何在java扫描仪类中包含空格[重复]
【发布时间】:2016-10-31 11:50:05
【问题描述】:

编辑---------- 似乎我的解释并不是那么好,所以这是我需要做的更好的一个。这是一个示例文件(忽略行之间的空格):

10=android|156.94.34.212|设备 1|5|9

15=IOS|134.58.48.343|数据|3|7

我想解析每一行。我需要存储除“=”和“|”之外的行的每个部分字符和最后 2 个数字也无关紧要。所以我不需要 5,9,3 和 7。我的问题是当我遇到设备 1 时。我需要保存该空间和 1 但不知道如何。这就是我需要在第一行显示的内容:

id = 10

设备 = 安卓

ipAddress = 156.94.34.212

设备名称 = 设备 1

示例代码:

Scanner scan = new Scanner(file);
while(scan.hasNextLine()){
    Scanner id = new Scanner(scan.next()).useDelimiter("=");
    String deviceID = id.next();
    Scanner dataScan = new Scanner(id.next()).useDelimiter("[|]");
    String device = dataScan.next();
    String address = dataScan.next();
    String deviceName = dataScan.next();
    scan.nextLine();
 }

打印输出将“设备 1”中的 1 去掉,其他所有内容都正确解析。

【问题讨论】:

  • @ochi 不,这两个问题不相关。投票结束“不清楚”或“为什么这段代码不起作用”就足够了,因为没有 OP 代码就无法回答这个问题。
  • @Tom 我正在按照@iciaran 的答案的思路思考-> 阅读这条线,用已知的分隔符分隔(但我没有完全清楚地表达这一点,我的错)
  • @ochi OPs 的问题读起来有点像他目前确实这样做,但这就是为什么这个问题不清楚(至少对我来说),因为他得到的结果很奇怪。
  • @Tom 对我来说,OP 正在使用 .next() 从扫描仪读取输入 - 这就是为什么 .nextLine() 是一个更好的选择恕我直言
  • 请显示minimal reproducible exampleedit。我们想看看您如何设置分隔符

标签: java


【解决方案1】:

而不是使用scanner.next(),而是使用返回整行的scanner.nextLine(),然后您可以使用string.split("\\|") 或类似方法拆分行,以获取行中元素的字符串数组,使用“|”拆分。 "分隔符。

【讨论】:

  • 已修复,遗漏了一个“\”,感谢您发现它。
猜你喜欢
  • 2015-10-23
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 2015-10-02
相关资源
最近更新 更多