说我有一个字符串:
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()
方法
答案 0 :(得分:2)
您可以将正则表达式用作words.replaceAll(".*age\\D*([\\d\\s]+).*","$1").split("\\s+")
这将获取所有数字作为字符串,您可以选择拆分将它们转换为数字数组 Demo
.*age\\D*([\\d\\s]+).*
:.*
匹配任何内容,匹配age
,然后匹配0或更多非数字编号
([\\d\\s]+).*
:匹配和捕获,1个或多个(
数字和空格)
表示为$1
然后匹配任何内容直到换行
答案 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(" "));