在 Java 中检查并从字符串中提取数字

新手上路,请多包涵

我正在编写一个程序,用户可以在其中输入以下格式的字符串:

 "What is the square of 10?"

  1. 我需要检查字符串中是否有数字
  2. 然后只提取数字。
  3. 如果我使用 .contains("\\d+").contains("[0-9]+") ,无论输入是什么,程序都找不到字符串中的数字,但是 .matches("\\d+") 只有数字。

我可以使用什么作为查找和提取的解决方案?

原文由 Duane 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 523
2 个回答

我使用的解决方案如下所示:

 Pattern numberPat = Pattern.compile("\\d+");
Matcher matcher1 = numberPat.matcher(line);

Pattern stringPat = Pattern.compile("What is the square of", Pattern.CASE_INSENSITIVE);
Matcher matcher2 = stringPat.matcher(line);

if (matcher1.find() && matcher2.find())
{
    int number = Integer.parseInt(matcher1.group());
    pw.println(number + " squared = " + (number * number));
}

我敢肯定这不是一个完美的解决方案,但它适合我的需要。谢谢大家的帮助。 :)

原文由 Duane 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试这个

str.matches(".*\\d.*");

原文由 Evgeniy Dorofeev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题