Java - 将文本拆分为没有明显分隔符的数组

标签 java arrays regex 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

理想情况下,我希望每个名字都在 [0] 中(或名字在 [0] 中,姓氏在 [1] 中),每个位置都在 [2] 中,或者在城市和州的两个不同索引中,然后每个分数都在自己的索引中。每个人都有四个独立的号码。例如 Adam Rippon 的得分是 77.58、144.61、63.67、80.94

我不能按空格拆分,因为有些城市的名称之间有一个空格(例如 New York 将在两个不同的数组元素中拆分为 New 和 York,而 Broadmoor 将在一个元素中)。不能用逗号分隔城市,因为 Southwest 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();

要提取数字,我们可以使用正则表达式搜索所有带两位小数的数字。

Pattern pattern = Pattern.compile("(\\d+\\.[0-9]{2})");

Matcher matcher = pattern.matcher(thirdColumn);

while(matcher.find())
{
    System.out.println(matcher.group());
}

所以在这种情况下 47.00100.3449.2651.08 将输出

47.00
100.34
49.26
51.08

关于Java - 将文本拆分为没有明显分隔符的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31392458/

相关文章:

java - 为什么这个 JSONObject 不是 JSONArray?

regex - sed:截断多行的长条目

javascript - 获取引用正则表达式之外的数字

java - 在 .bash_profile 中设置 JAVA_HOME 未返回正确的路径

java - JAVA 8 中的 CMSMarkStackSizeMax 参数

java - 从用户输入字符串返回数组中的索引

node.js - 如何制作一个遍历所有 .m 和 .h 文件并替换这行代码的脚本

java - 将 JPanel 添加到 JScrollPane

java - 如何对 Java8 lambda 表达式中对象的 BigDecimal 属性求和?

arrays - Swift - 将 plist 文件读取到数组?