我必须阅读一个文本文件,其中包含1933年以来的所有NCAA 1级冠军比赛,

该文件的格式为:1939:Villanova:42:Brown:30
1945年:纽约大学(New York University):70年:俄亥俄州(Ohio State):65年**有些大学拥有多个空白的事实给我带来了很多麻烦,因为我们只是读学校的名字而丢弃了年份,分数和冒号。我不知道是否必须使用一个分隔符来丢弃哪些空格,但是buttom行让我很迷失。

我们将丢弃日期,点和“:”。我对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)
}
}
}

最佳答案

关于什么

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];
}

10-06 14:42