【问题标题】:Parsing String and Int in java在java中解析String和Int
【发布时间】:2015-06-24 01:59:17
【问题描述】:

我正在使用 java,我有一个我想解析的字符串,其中包含以下内容

Logging v0.12.4

并想将其拆分为包含

的字符串
Logging

和一个包含

的整数数组
0.12.4

在哪里

array[i][0] = 0

array[i][1] = 12

等等。我已经坚持了一段时间了。

【问题讨论】:

  • 我在您的问题中没有看到任何 Java 代码。你试过什么?
  • 请向我们展示您目前编写的代码。
  • 似乎有什么问题?
  • 会一直有2个.吗?
  • @Tichodroma 你可能是对的。我没有太在意 OP 使用 2D 数组这一事实(这有点令人困惑)。

标签: java arrays string parsing int


【解决方案1】:
  • 在空格上分割你的字符串得到Loggingv0.12.4
  • v0.12.4 中删除(子字符串)v
  • 在点上分割0.12.4(使用split("\\."),因为点在正则表达式中是特殊的)
  • 您还可以将每个 "0" "12" "4" 解析为整数(Integer.parseInt 可能会有所帮助)。

【讨论】:

  • 最好的回答方式,如果 OP 没有分享他的代码 +1
  • \\s. 分割 :) 。这将删除 子字符串步骤
  • @TheLostMind Neat 但现在对 OP 来说可能太多了。我宁愿专注于一般方法而不是优化。无论如何"\\sv" 可能会更清楚:)
  • 感谢您的帮助,我知道我是一个旋钮问题,但我所做的对我不起作用,但它现在起作用了,再次感谢 :)
【解决方案2】:

您可以使用正则表达式或只是普通的字符串拆分

String myString = "Logging v0.12.4";
String[] parts = myString.split(" v");
// now parts[0] will be "Logging" and
// parts[1] will be "0.12.4";

然后对版本部分做同样的事情:

String[] versionParts = parts[1].split("\\.");
// versionParts[0] will be "0"
// versionParts[1] will be "12"
// versionParts[2] will be "4"

您可以使用Integer.parseInt(...) 将这些“转换”为整数

【讨论】:

  • OP 希望版本部分也被标记化
  • ... 并解析为整数 :)
  • 鉴于没有提供代码,我发现提供伪解决方案也完全可以!
【解决方案3】:

哥们,来吧,因为我今天感觉很慷慨:

String string = "Logging v0.12.4";
Matcher matcher = Pattern.compile("(.+?)\\s+v(.*)").matcher(string);

if (matcher.matches()) {
    String name = matcher.group(1);
    int[] versions = Arrays.stream(matcher.group(2).split("\\.")).mapToInt(Integer::parseInt).toArray();
}

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 2022-12-15
    • 2020-11-18
    • 1970-01-01
    • 2016-01-21
    • 2020-02-26
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多