Как извлечь подстроку из документа, который итерируется, но постоянно меняется - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь перебрать документ, который я прочитал, в список, и мне нужно получить определенную строку информации, которая находится в середине каждой строки, и напечатать эту строку информации в строке, проблема в том, чтоСтрока изменяется с каждой строкой, как чтение группы идентификаторов, которые окружены другими объемами информации

Я попытался преобразовать список в строку и использовать doc.substring (doc.lastIndexOf ("S"), но это толькополучить последний идентификатор и распечатать этот же идентификатор для каждой строки текста вместо того, чтобы связать конкретный идентификатор с остальной частью его информации.

public static void doStuff(List<String> text) {
        char type = 'x';
        int bed = 0;
        double rentDue = 0;
        String ID;
        String doc = text.toString();
        for (int i = 0; i < text.size(); i++) {
            if (text.get(i).charAt(0) == 'S') {
                ID = doc.substring(doc.lastIndexOf("S"));
                type = text.get(i).charAt(0);
                bed = Character.getNumericValue(text.get(i).charAt(text.size() + 4));
                rentDue = Payment.processPayment(type, bed);
                System.out.print(type);
                System.out.print("    ");
                System.out.print(bed);
                System.out.print("    ");
                System.out.print(rentDue);
                System.out.print("    ");
                System.out.print(ID);
            } else {
                ID = doc.substring(doc.lastIndexOf("A"));
                type = text.get(i).charAt(0);
                bed = Character.getNumericValue(text.get(i).charAt(text.size() + 4));
                rentDue = Payment.processPayment(type, bed);
                System.out.print(type);
                System.out.print("    ");
                System.out.print(bed);
                System.out.print("    ");
                System.out.print(rentDue);
                System.out.print("    ");
                System.out.print(ID);
            }
        }
    }
Expected: 
S    3    1352.0 SABQ138
A    2    864.0 AABQ205
S    1    936.0 SABQ127
A    2    864.0 AABQ313
S    2    1144.0 SABQ126
A    2    864.0 AABQ302
Actual:
S    3    1352.0    SABQ126 2, A AABQ302 2]
A    2    864.0    ABQ302 2]
S    1    936.0    SABQ126 2, A AABQ302 2]
A    2    864.0    ABQ302 2]
S    2    1144.0    SABQ126 2, A AABQ302 2]
A    2    864.0    ABQ302 2]
...