0

我有一个文本文件,我必须在其中逐行获取。

对于每一行,我都必须剪断我的绳子并将其放在桌子上。

我的分隔符是空格。

字符串示例:

22/03/2013 00h00    9940    10200    10260    10190    10030    10060

结果示例:

[22/03/2013 00h00,  9940, 10200, 10260, 10190, 10030, 10060]

我的问题是在我的文件中,我的分隔符从一行到另一行

例子:

22/03/2013 00h00 9940    10200    10260    10190    10030    10060
22/03/2013 01h00    9970 9900    9970    9850 9830    9740 
22/03/2013 02h00      9630      9750      10010      10100    10040    10010

我怎么能剪断我的绳子?

4

3 回答 3

2

别忘了这String.split()需要一个正则表达式。您可以拆分多个空格,因此:

myString.split("\\s+");

这使用字符类 \s,表示任何空白字符(空格、制表符等)

目前尚不清楚您的数据行在空格方面的定义有多好。您最好的选择可能是如上所述分割空白,然后取前2 个元素并将它们作为日期/时间处理。例如

String[] results = myString.split("\\s+");
String datetime = results[0] + " " + results[1];

(检查那些存在的结果元素等)

于 2013-07-17T13:50:32.973 回答
1

你可以试试这个正则表达式

str.split("(?<!/\\d{4}) +");
于 2013-07-17T13:51:50.443 回答
0

类似的东西应该适合你:

String str = "22/03/2013 00h00 9940    10200    10260    10190    10030    10060 " +
    "22/03/2013 01h00    9970 9900    9970    9850 9830    9740 " + 
    "22/03/2013 02h00      9630      9750      10010      10100    10040    10010";

// split string into individual records
String[] rows = str.split("\\s+(?=\\d{2}/\\d{2}/\\d{4} )");

// now split each row into columns (combine first 2 columns into 1)
for (String r: rows)
    System.out.println(Arrays.toString(r.split("(?<!\\d{2}/\\d{2}/\\d{4})\\s+")));

输出:

[22/03/2013 00h00, 9940, 10200, 10260, 10190, 10030, 10060]
[22/03/2013 01h00, 9970, 9900, 9970, 9850, 9830, 9740]
[22/03/2013 02h00, 9630, 9750, 10010, 10100, 10040, 10010]

说明:如果后面是 nn/nn/nnnn 格式的日期,则第一个正则表达式被 1 个或多个空格/换行符分割\\d{2}/\\d{2}/\\d{4}

第二个正则表达式是将列拆分为 1 个或多个空格/换行符,如果它前面没有相同格式的日期,因此忽略日期后的第一个空格。

于 2013-07-17T13:59:27.717 回答