Groovy 查找字符串中第一个整数位置的最快方法

Groovy 查找字符串中第一个整数位置的最快方法,groovy,Groovy,我正在从一个文本文件中读取如下行: ;Nonsense/sec;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05; ;Foo/bar;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05; ;Coding errors;0;0;0;0;0;0;0;0;0;0; line = line.substring(firstIntegerLocation, line.length()) 我需要做的是在任何给定的行中找到第一

我正在从一个文本文件中读取如下行:

 ;Nonsense/sec;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05;
 ;Foo/bar;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05;
 ;Coding errors;0;0;0;0;0;0;0;0;0;0;
 line = line.substring(firstIntegerLocation, line.length())
我需要做的是在任何给定的行中找到第一个数字的位置,这样我就可以这样做:

 ;Nonsense/sec;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05;
 ;Foo/bar;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05;
 ;Coding errors;0;0;0;0;0;0;0;0;0;0;
 line = line.substring(firstIntegerLocation, line.length())
不要像这样硬编码起始位置:

 line = line.substring(10, line.length()-2)
每一行都以一些文本开始,用分号分隔,然后是一系列数字,这些数字就是我要找的。我需要忽略开头的字母字符(以及任何特殊字符,如斜杠)


我必须使用Java7,而不是8,所以任何解决方案都必须是旧的:)我需要一个简单的方法,我可以将字符串传递给它,然后它将返回第一个整数的位置。我正在寻找实现这一点的最快方法,因为我有很多行要处理,而且还是使用Java7,而不是8。感谢您的帮助。

使用正则表达式:

def行=”;无意义/秒;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05;'
line=line.replaceAll(/^\D*/,“”)
这将用空字符串替换行
^
开头的所有非数字
\D*


但是,如果以后要处理数字,有一种方法可以获取数字数组:

def行=”;无意义/秒;0.17;0;0.13;0.05;0.07;0.2;0.1;0.12;0.1;0.05;'
def nums=line.findAll(/(\d+(\.\d+))/)。收集{it as BigDecimal}
返回:

[0.17, 0, 0.13, 0.05, 0.07, 0.2, 0.1, 0.12, 0.1, 0.05]

我注意到的一件事是,它剖析了floatinjg点数,所以这对我来说不起作用。