当前位置: 首页 > 知识库问答 >
问题:

我可以从字符串中提取数字而不计算该字符串中的数字量吗?

冯泓
2023-03-14

我需要将数字从字符串提取到int数组,但在Matcher类中找不到合适的函数。有什么办法比我做得更好吗?例如,这样的split()函数按分隔符分割字符串并返回准备好的数组。

import java.util.regex.*;

public class Test
{
    public static void main(String[] args)
    {
        String stringWithNumbers = "1111llalbhahbah2222albhlahbahb3333lHVvlVLH4444ABHABHB";
        int[] numbersFromString;
        
        // find amount of numbers in stringWithNumbers
        Pattern toFindNumbers = Pattern.compile("\\d+");
        Matcher m1 = toFindNumbers.matcher(stringWithNumbers);
        int amountOfNumbers = 0;
        while (m1.find()) amountOfNumbers++;
        
        // fill array with numbers
        numbersFromString = new int[amountOfNumbers];
        m1.reset();
        for (int i = 0; m1.find(); i++)
        {
            numbersFromString[i] = Integer.parseInt(m1.group());
        }
        
        // print array (test)
        for (int i: numbersFromString)
        {
            System.out.println(i);
        }
    }
}

输出:
1111
2222
3333
4444

共有2个答案

司马宏茂
2023-03-14

试试这个:

String stringWithNumbers = "1111llalbhahbah2222albhlahbahb3333lHVvlVLH4444ABHABHB";
int[] numbersFromString = Stream.of(stringWithNumbers.split("[a-zA-Z]+")).mapToInt(Integer::parseInt).toArray();

for (int i: numbersFromString)
{
     System.out.println(i);
}

输出:

1111
2222
3333
4444
司空瑾瑜
2023-03-14

您可以将String方法拆分与正则表达式\\D一起使用,如下所示:

String stringWithNumbers = "1111llalbhahbah2222albhlahbahb3333lHVvlVLH4444ABHABHB";
String[] s = stringWithNumbers.split("\\D+");
System.out.println(Arrays.toString(s)); //it will print [1111, 2222, 3333, 4444]
 类似资料:
  • 问题内容: 我想从包含数字和字母的字符串中提取数字: 我想在这里获取号码或任何其他号码。 问题答案:

  • 问题内容: 我在JavaScript中有一个字符串,例如“#box2”,我只想从中获得“ 2”。 尝试过: 它仍然在警报中返回#box2,我该如何使其正常工作? 它需要容纳末尾附加的任何长度的数字。 问题答案: 对于此特定示例, 在一般情况下: 由于这个答案由于某种原因而受到欢迎,因此有一个好处:正则表达式生成器。

  • 问题内容: 我有一个Java 对象。我只需要从中提取数字。我举一个例子: 我想要 是否有仅提取数字的库函数? 感谢你的回答。在尝试这些库之前,我需要知道是否必须安装任何其他库? 问题答案: 你可以使用正则表达式并删除非数字。

  • 问题内容: 我有一个字符串,我想提取字符串中的(唯一)数字序列。 示例:helloThisIsA1234Sample。我想要1234 假设数字序列在字符串中只会出现一次,但不会出现在同一位置。 (对于那些会问的人,我有一个服务器名称,需要在其中提取一个特定的数字) 我想使用Apache commomns中的StringUtils类。 谢谢! 问题答案: 使用此代码号仅包含所需的输出。

  • 所谓字符串,指的就是字符的序列或者“串”。我们要在字符串上执行的第一个操作是提取所有字符中的一个。C++使用方括号([和])执行该操作: apstring fruit = "banana"; char letter = fruit[1]; cout << letter << endl; 表达式fruit[1]表明我们要从字符串变量fruit中取得编号为1的字符,并将结果保存在字符变量letter

  • 问题内容: 我是新手,我有一个字符串,我想从字符串中提取数字。例如: 输出为 我只想获取一个整数,而不是列表。 问题答案: 您可以使用方法按 数字 字符串,