为了账号安全,请及时绑定邮箱和手机立即绑定

如何从字符串中提取数字并获取INT数组?

/ 猿问

如何从字符串中提取数字并获取INT数组?

白板的微信 2019-07-04 16:26:40

如何从字符串中提取数字并获取INT数组?

我有一个字符串变量(基本上是一个英文句子,有一个未指定的数字),我想将所有的数字提取到一个整数数组中。我想知道是否有一个带有正则表达式的快速解决方案?


我用了肖恩的解决方案,稍微修改了一下:

LinkedList<String> numbers = new LinkedList<String>();Pattern p = Pattern.compile("\\d+");Matcher m = p.matcher(line); while (m.find()) {
   numbers.add(m.group());}


查看完整描述

4 回答

?
h5

mark一下

查看完整回答
反对 回复 2019-12-16
?
三国纷争
Pattern p = Pattern.compile("-?\\d+");Matcher m = p.matcher("There are more than -2 and less than 12 numbers here");while (m.find()) {
  System.out.println(m.group());}

..版画-212.


-?匹配前导负号-可选。D匹配一个数字,我们需要写\\\但是,在Java字符串中。因此,\d+匹配一个或更多位数。


查看完整回答
反对 回复 2019-07-04
?
天涯尽头无女友

如何使用replaceAllString方法:

    String str = "qwerty-1qwerty-2 455 f0gfg 4";      
    str = str.replaceAll("[^-?0-9]+", " "); 
    System.out.println(Arrays.asList(str.trim().split(" ")));

产出:

[-1, -2, 455, 0, 4]

描述

[^-?0-9]+
  • [

    ]

    将一组字符分隔为单个匹配,即只按任何顺序限定一次。
  • ^

    集合开头使用的特殊标识符,用于表示与所有字符匹配

    出现在分隔的集合中,而不是集合中的所有字符。
  • +

    在一次和无限次之间,尽可能多次,根据需要回馈
  • -?

    其中一个角色是“-”和“?”
  • 0-9

    介于“0”和“9”之间的字符


查看完整回答
反对 回复 2019-07-04
?
浮云间
Pattern p = Pattern.compile("[0-9]+");Matcher m = p.matcher(myString);while (m.find()) {
    int n = Integer.parseInt(m.group());
    // append n to list}// convert list to array, etc

您实际上可以将[0-9]替换为\d,但这涉及双反斜杠转义,这使得阅读变得更加困难。


查看完整回答
反对 回复 2019-07-04

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信