如何从混合字符串中获取整数值

时间:2018-01-16 16:08:55

标签: java string

说我有一个字符串:

String words= "28282 Hello, my name is potato, my age is 245 112 274 141 bla bla bla etc";

java中有没有办法只使用年龄245 112 274 141而不必使用substring()。因为我正在处理的字符串长度不一致所以我不能使用substring()方法

2 个答案:

答案 0 :(得分:2)

您可以将正则表达式用作words.replaceAll(".*age\\D*([\\d\\s]+).*","$1").split("\\s+")

这将获取所有数字作为字符串,您可以选择拆分将它们转换为数字数组 Demo

.*age\\D*([\\d\\s]+).*.*匹配任何内容,匹配age,然后匹配0或更多非数字编号

([\\d\\s]+).*:匹配和捕获,1个或多个(数字和空格)表示为$1然后匹配任何内容直到换行

Java Demo

答案 1 :(得分:2)

使用Streams(Java 8+),它非常简单:

Stream.of("28282 Hello, my name is potato, my age is 245 112 274 141 bla bla bla etc"
   .replaceAll("^(\\d*\\s*)?(.*)", "$2").split("\\s+"))
 .filter(part -> part.matches("^\\d+$"))
 .collect(Collectors.joining(" "));