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

117

我有一个字符串变量(基本上是一个含有未指定数量数字的英文句子),我想把其中所有数字提取出来并存入整数数组中。我想知道是否有一种使用正则表达式的快速解决方案?


我使用了Sean的解决方案,并稍作修改:

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

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

1
数字是由空格或其他字符包围的吗?数字是如何格式化的,是十六进制、八进制、二进制还是十进制? - Buhake Sindi
我认为从问题中已经很清楚了:这是一个带有数字的英语句子。此外,我在谈论整数数组,所以我要找的是整数。 - John Manak
13个回答

1
我建议检查ASCII值以从字符串中提取数字。假设您有一个输入字符串"myname12345",如果您想要提取数字"12345",您可以先将字符串转换为字符数组,然后使用以下伪代码。
    for(int i=0; i < CharacterArray.length; i++)
    {
        if( a[i] >=48 && a[i] <= 58)
            System.out.print(a[i]);
    }

一旦数字被提取,将它们添加到数组中。
希望这有所帮助。

Java字符串是Unicode/UTF-16代码单元的计数序列。由于UTF-16的设计,前128个字符与它们的ASCII编码具有相同的值(但不是相同的大小);超出这个范围,如果认为你正在处理ASCII,将会导致错误。 - Tom Blodget

0
我发现这个表达式最简单。
String[] extractednums = msg.split("\\\\D++");

0
public static String extractNumberFromString(String number) {
    String num = number.replaceAll("[^0-9]+", " ");
    return num.replaceAll(" ", "");
}

从字符串中提取数字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接