Разбить строку на несколько строк

У меня есть программа, которая получает статистику хоккеистов в конкретной команде с помощью Jsoup и помещает ее в одну строку. Я хочу разделить строки, чтобы я мог получить статистику для каждого игрока в своей строке. Это код, который у меня есть и объяснил:

public static void main(String[] args) throws IOException {


    Document doc = Jsoup.connect("http://espn.go.com/nhl/team/stats/_/name/phi/philadelphia-flyers").get();

    for (Element table : doc.select("table.tablehead")) {
        for (Element row : table.select("tr")) {
            Elements tds = row.select("td");
             if (tds.size() > 6) {
                String a = tds.get(0).text() + ":" + tds.get(1).text() + " GOALS: " + tds.get(2).text() + " ASSISTS: " + tds.get(3).text() + " POINTS: " + tds.get(4).text() + " PLUS/MINUS: " + tds.get(5).text() + " PIM: " + tds.get(6).text();
                System.out.println(a);
            }
        }
    }
}

Вывод дает несколько строк, чтобы дать вам представление, это первые три строки, которые он дает:

PLAYER:GP GOALS: G ASSISTS: A POINTS: PTS PLUS/MINUS: +/- PIM: PIM
Matt Read, C:13 GOALS: 5 ASSISTS: 4 POINTS: 9 PLUS/MINUS: 2 PIM: 2
Brayden Schenn, C:12 GOALS: 2 ASSISTS: 6 POINTS: 8 PLUS/MINUS: 3 PIM: 5

Если начало строки = Matt Read, я хочу создать строку, содержащую:

Matt Read, C:13 GOALS: 5 ASSISTS: 4 POINTS: 9 PLUS/MINUS: 2 PIM: 2

Если начало строки = Брайден Шенн, я хочу создать строку, содержащую:

Brayden Schenn, C:12 GOALS: 2 ASSISTS: 6 POINTS: 8 PLUS/MINUS: 3 PIM: 5

person MaxK    schedule 12.02.2013    source источник


Ответы (3)


Если я не понимаю код, вы, похоже, уже это делаете - каждая строка находится в переменной String a на каждой итерации цикла. Вам просто нужно сохранить каждое назначение a. Создайте экземпляр ArrayList<String> перед начальным циклом for и добавьте к нему переменную a перед вызовом System.out.println(a);. После выхода из цикла for ваш ArrayList должен содержать каждый соответствующий отдельный String.

public static void main(String[] args) throws IOException {

    List<String> list = new ArrayList<String>(); // THIS LINE IS NEW

    Document doc = Jsoup.connect("http://espn.go.com/nhl/team/stats/_/name/phi/philadelphia-flyers").get();

    for (Element table : doc.select("table.tablehead")) {
        for (Element row : table.select("tr")) {
            Elements tds = row.select("td");
             if (tds.size() > 6) {
                String a = tds.get(0).text() + ":" + tds.get(1).text() + " GOALS: " + tds.get(2).text() + " ASSISTS: " + tds.get(3).text() + " POINTS: " + tds.get(4).text() + " PLUS/MINUS: " + tds.get(5).text() + " PIM: " + tds.get(6).text();

                    list.add(a);  // THIS LINE IS NEW

                System.out.println(a);
            }
        }
    }

        // at this point, variable "list" contains each String assigned to "a" above.

}
person JoshDM    schedule 12.02.2013
comment
Благодарю вас! Не знаю, почему я не мог об этом подумать. - person MaxK; 13.02.2013

Вы можете использовать класс Scanner для извлечения отдельных строк из любого текста (или непосредственно из файла), вызвав метод scanner.nextLine(). Он просто будет сканировать входную строку, пока не встретит новый символ строки, и вернет все до него.

person Nathan    schedule 12.02.2013

Вы можете использовать сканер или, что предпочтительнее, список или даже HashMap для хранения информации об игроке.

Вместо того, чтобы печатать строку, объявите предпочитаемый тип и сохраните там строку a.

person oalsing    schedule 12.02.2013