【问题标题】:Finding Multiple Integers Inside A String Using Regex使用正则表达式在字符串中查找多个整数
【发布时间】:2013-09-22 23:46:01
【问题描述】:

我目前有以下代码:

    Pattern intsOnly = Pattern.compile("\\d+");
    Matcher matcher = intsOnly.matcher(o1.getIngredients());
    matcher.find();
    String inputInt = matcher.group();

目前发生的情况是,使用正则表达式,它会在字符串中找到第一个整数并将其分开,以便我可以对其执行操作。我用来在其中查找整数的字符串有很多整数,我希望它们都是分开的。如何调整此代码,以便它还记录字符串中的其他整数,而不仅仅是第一个。

提前致谢!

【问题讨论】:

  • 您的字符串数据是什么样的,您使用的是 Java 平台吗?
  • 这是一套成分。一个例子是这样的:1个鸡蛋,2个培根皮,3个土豆。在那个例子中,我需要找到所有这三个数字。目前我只撤回第一个。

标签: android regex string int matcher


【解决方案1】:

在您发布的代码中:

matcher.find();
String inputInt = matcher.group();

您通过一次 find 调用来匹配整个字符串。然后将第一个匹配的数字分配给您的字符串inputInt。因此,例如,如果您有以下字符串数据,则您的返回将仅为1

1 egg, 2 bacon rashers, 3 potatoes

您应该使用while 循环来遍历您的匹配项。

Pattern intsOnly = Pattern.compile("\\d+");
Matcher matcher = intsOnly.matcher(o1.getIngredients());
while (matcher.find()) {
  System.out.println(matcher.group());
}

【讨论】:

  • 非常感谢。它完美地工作并读出所有相关数字。我是 Regex 的新手,并没有真正思考。感谢您的帮助。
  • 现在我已经找到了整数,我想将它们乘以一个值,然后将它们放回原始字符串中并使用新的乘数。你能帮我实现这个目标吗?我应该如何解决这个问题?
  • 我想我会发布一个新问题,以便您有机会获得更多声誉。这是链接:stackoverflow.com/questions/18971006/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
相关资源
最近更新 更多