21xrx.com
2024-09-19 09:00:50 Thursday
登录
文章检索 我的文章 写文章
如何在Java中从字符串中提取数字?代码案例分享
2023-06-15 09:16:32 深夜i     --     --
Java 字符串 提取数字

在Java中,我们经常需要从一个字符串中提取数字。例如,从一个包含价格的字符串中提取金额,或者从一个包含日期的字符串中提取年份等等。

Java提供了一些有用的类和方法来实现这一目的,比如使用正则表达式或者使用StringTokenizer类等。下面我们将介绍这些方法的使用,并给出相应的代码案例。

1. 使用正则表达式提取数字

在Java中,我们可以使用正则表达式来匹配并提取字符串中的数字。下面是一个使用正则表达式提取字符串中数字的案例:


String str = "Hello 123 World 456!";

Pattern pattern = Pattern.compile("\\d+");

Matcher matcher = pattern.matcher(str);

while (matcher.find()) {

  System.out.println(Integer.parseInt(matcher.group()));

}

上述代码中,首先定义了一个字符串str,其中包含了数字123和456。然后使用Pattern类的compile方法编译了一个正则表达式"\\d+",该正则表达式代表匹配一个或多个数字。接着使用Matcher类的matcher方法将该正则表达式应用于字符串str,然后通过循环找到所有匹配的数字,并使用Integer类的parseInt方法将其转换为整数类型进行输出。

2. 使用StringTokenizer类提取数字

StringTokenizer类是Java中一个用于将字符串分割成多个子字符串的工具类。我们可以使用该类来将包含数字的字符串分割成一系列数字。下面是一个使用StringTokenizer类将字符串中的数字提取出来的案例:


String str = "Hello 123 World 456!";

StringTokenizer st = new StringTokenizer(str);

while (st.hasMoreTokens()) {

  if (st.nextToken().matches("\\d+")) {

    System.out.println(Integer.parseInt(st.nextToken()));

  }

}

上述代码中,首先定义了一个字符串str,其中包含了数字123和456。然后使用StringTokenizer类的构造函数将其转换为一个可迭代的对象。接着使用while循环和hasMoreTokens方法遍历该对象中的所有子字符串,并使用matches方法判断该子字符串是否为数字,如果是则使用Integer类的parseInt方法将其转换为整数类型进行输出。

3. 使用Java8的Stream API提取数字

Java8引入了Stream API,它提供了一些方便的方法来在集合上进行操作。我们可以使用Stream API来将包含数字的字符串中的数字提取出来。下面是一个使用Stream API提取数字的案例:


String str = "Hello 123 World 456!";

List numbers = Stream.of(str.split("\\D+"))

    .filter(s -> !s.isEmpty())

    .map(Integer::parseInt)

    .collect(Collectors.toList());

System.out.println(numbers);

上述代码中,首先定义了一个字符串str,其中包含了数字123和456。然后使用split方法将字符串str按照非数字部分分割成多个子字符串,并使用Stream.of方法将其转换为一个Stream对象。接着使用filter方法过滤掉空字符串,并使用map方法将其转换为整数类型。最后使用collect方法将所有整数类型的数字收集到一个List对象中进行输出。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复