sam*_*sam 3 java regex arrays split
我需要使用循环将每行文本拆分为一个数组.问题是,鉴于文本文件的格式(我无法更改),没有明显的分隔符可供使用:
Adam Rippon New York, NY 77.58144.6163.6780.94
Brandon Mroz Broadmoor, CO 70.57138.1266.8471.28
Stephen Carriere Boston, MA 64.42138.8368.2770.56
Grant Hochstein New York, NY 64.62133.8867.4468.44
Keegan Messing Alaska, AK 61.15136.3071.0266.28
Timothy Dolensky Atlanta, AL 61.76123.0861.3063.78
Max Aaron Broadmoor, CO 86.95173.4979.4893.51
Jeremy Abbott Detroit, MI 99.86174.4193.4280.99
Jason Brown Skokie Value,IL 87.47182.6193.3489.27
Joshua Farris Broadmoor, CO 78.37169.6987.1783.52
Richard Dornbush All Year, CA 92.04144.3465.8278.52
Douglas Razzano Coyotes, AZ 75.18157.2580.6976.56
Ross Miner Boston, MA 71.94152.8772.5380.34
Sean Rabbit Glacier, CA 60.58122.7656.9066.86
Lukas Kaugars Broadmoor, CO 64.57114.7550.4766.28
Philip Warren All Year, CA 55.80113.2457.0258.22
Daniel Raad Southwest FL 52.98108.0358.6151.42
Scott Dyer Brooklyn, OH 55.78100.9744.3357.64
Robert PrzepioskiRochester, NY 47.00100.3449.2651.08
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望每个名称都在[0](或[1]中的[0]姓氏中的名字),每个位置在[2]中,或者在两个不同的城市和州的索引中,然后每个得分在他们自己的索引中.每个人有四个单独的数字.例如Adam Rippon的得分是77.58,144.61,63.67,80.94
我不能用空格分割,因为有些城市的名字之间有一个空格(比如纽约将在两个不同的数组元素中分成New和York,而Broadmoor则在一个元素中).无法用逗号分割城市,因为西南FL没有逗号.我也不能用小数点分割数字,因为这些数字是错误的.那么有一个简单的方法可以做到这一点吗?也许是一种通过小数位数分割数字的方法?
看起来每列的大小都是固定的.因此,在您的情况下,第1列长度为17个字符,第二列长度为16个字符,最后一列长度为21个字符.
现在,您可以简单地遍历这些行并使用该substring()方法.就像是...
String firstColumn = line.substring(0, 17).trim();
String secondColumn = line.substring(17, 33).trim();
String thirdColumn = line.substring(33, line.length).trim();
Run Code Online (Sandbox Code Playgroud)
要提取数字,我们可以使用正则表达式搜索具有两个小数位的所有数字.
Pattern pattern = Pattern.compile("(\\d+\\.[0-9]{2})");
Matcher matcher = pattern.matcher(thirdColumn);
while(matcher.find())
{
System.out.println(matcher.group());
}
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下47.00100.3449.2651.08会输出
47.00
100.34
49.26
51.08
Run Code Online (Sandbox Code Playgroud)