REGEX: парсинг большой строки - PullRequest
1 голос
/ 01 марта 2012

Я читаю InputStream в String, используя следующий код.

public String convertStreamToString(InputStream is) {
    try {
        return new Scanner(is).useDelimiter("\\A").next();
    } catch (NoSuchElementException e) {
        return "";
    }
}

Однако я получаю очень большой String в качестве вывода.Как я могу разобрать это, чтобы просто получить значения для Free blocks и Block count как две отдельные строки?

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

[Отредактировано] Извините, не понял, что вы делали со своим сканером:

    Scanner scanner = new Scanner(is).useDelimiter("\\n");
    scanner.findWithinHorizon(Pattern.compile("Block\\scount:\\s*(\\d+)"), 0);
    String blockCount = scanner.match().group(1);
    scanner.findWithinHorizon(Pattern.compile("Free\\sblocks:\\s*(\\d+)"), 0);
    String freeBlocks = scanner.match().group(1);

Это даст вам только значения свободных блоков и количество блоков. Например, freeBlocks будет равно "90433", а blockCount будет равно "97656".

0 голосов
/ 01 марта 2012
Scanner sc = new Scanner(is);
while (sc.hasNextLine()) {
    String line = sc.nextLine();
    // If line contains information
        // Parse Line
    // Else
        // continue
}

Я оставлю логику попыток определить, содержит ли строка информацию, которую вы ищете, до вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...