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

2022-08-31 09:16:18

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


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

LinkedList<String> numbers = new LinkedList<String>();

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

答案 1
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+ 匹配 1 位或更多位数字。\\\


答案 2

使用java.lang.String方法怎么样:replaceAll

    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”之间的字符