【问题标题】:Parse values from a string从字符串中解析值
【发布时间】:2011-03-06 14:22:27
【问题描述】:

您将如何解析字符串中的值,例如下面的?

12:40:11  8    5                  87

数字之间的差距是变化的,第一个值是时间。以下正则表达式不分隔时间分量:

str.split("\\w.([:]).")

有什么建议吗?

【问题讨论】:

  • 文件是否定宽分隔?
  • 如果你能解释为什么你认为"\\w.([:])." 会起作用,我可以详细说明逻辑出错的地方。现在我什至不确定你是怎么做到的。
  • 预期的输出是什么? [12,40,11,8,5,87] ?

标签: java regex text-parsing


【解决方案1】:

正则表达式\s+ 匹配一个或多个空格,因此它将split 转换为4 个值:

"12:40:11", "8", "5", "87"

作为 Java 字符串文字,此模式为 "\\s+"

如果你想得到所有 6 个数字,那么你也想在: 上拆分,所以模式是\s+|:。作为 Java 字符串文字,这是 "\\s+|:"

参考文献


开启Scanner

除了使用String.split,您还可以使用java.util.ScanneruseDelimiter,就像使用split 一样。优点是它具有int nextInt(),您可以使用它来将数字提取为int(如果您确实对此感兴趣)。

相关问题

【讨论】:

  • 是的,这是正确的,“\\s+”对我有用。非常感谢!
【解决方案2】:

参见Pattern docString API

使用

str.split("\\s+");

将产生

[ '12:40:11', '8', '5', '87' ]

str.split("\\s+|:");

应该让步

[ '12', '40', '11', '8', '5', '87' ]

【讨论】:

    猜你喜欢
    • 2014-03-04
    • 2018-04-13
    • 2016-08-15
    • 1970-01-01
    • 2018-06-13
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多