0

我必须阅读包含自 1933 年以来所有 NCAA Division 1 冠军赛的文本文件,

文件格式如下:1939:Villanova:42:Brown:30 1945:纽约大学:70:俄亥俄州:65 * *一些大学有多个空格的事实给我带来了很多麻烦,因为我们只需要读取学校名称并丢弃年份、分数和冒号。我不知道我是否必须使用一个丢弃什么空格的分隔符,但底线是我很迷茫。

我们要丢弃日期、分数和“:”。我对 useDelimiter 方法有点熟悉,但是我读到 .split("") 可能有用。由于缺乏模式知识,我遇到了很多问题。

这是我到目前为止所拥有的:

class NCAATeamTester
{
public static void main(String[]args)throws IOException
{
NCAATeamList myList = new NCAATeamList();     //ArrayList containing teams
Scanner in = new Scanner(new File("ncaa2012.data"));   
in.useDelimiter("[A-Za-z]+");      //String Delimeter excluding non alphabetic chars or ints
while(in.hasNextLine()){
String line = in.nextLine();
String name = in.next(line); 
String losingTeam = in.next(line);
//Creating team object with winning team 
NCAATeamStats win = new NCAATeamStats(name); 
myList.addToList(win);       //Adds to List
//Creating team object with losing team 
NCAATeamStats lose = new NCAATeamStats(losingTeam);
myList.addToList(lose)
}
}
}
4

1 回答 1

1

关于什么

String[] spl = line.split(':');
String name1 = spl[1]; 
String name2 = spl[3];

?

或者,如果同一行有更多记录,请使用正则表达式:

String line = "1939:Villanova:42:Brown:30   1945:New York University:70:Ohio State:65";

Pattern p = Pattern.compile("(.*?:){4}[0-9]+");
Matcher m = p.matcher(line);

while (m.find())
{
    String[] spl = m.group().split(':');
    String name = spl[1];
    String name2 = spl[3];
}
于 2013-01-02T15:52:09.723 回答