проблема вызова функции Java, только сначала находит совпадения .. закрыть? сброс? распоряжаться? - PullRequest
1 голос
/ 07 сентября 2010

У меня есть эта функция Java, которая извлекает строки из Inputstreams и возвращает список.Он использует java.util.Scanner и java.util.regex.Pattern.

Проблема в том, что это работает только при первом вызове.Если я переворачиваю свои вызовы, снова работает только первый, второй вызов никогда не возвращает совпадений.

List lsphones = extract (is, pattern, 0);List lsemails = extract (is, pattern ", 0);

Я подозреваю, что мне нужно сбросить списки или что-то в функции - если не как-то сама функция. Я пытался, но продолжаю получать исключения, когда яdo.

public static List<String> extract(InputStream in,String matchpattern,int grp) {  

.. scanner.close (); вернуть то, что

Я разрабатываю это в Android SDK.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Ваш метод извлечения читает до конца потока? Я подозреваю, что вам нужно закрыть и снова открыть поток, чтобы начать снова с самого начала. Если дело обстоит именно так, лучшим подходом будет сделать все совпадения за один проход через поток.

0 голосов
/ 07 сентября 2010

Если входной поток поддерживает mark (markSupported () == true), вы можете использовать mark () ... reset () в своем методе. Если нет, вам придется либо воссоздать входной поток, либо изменить свой метод, чтобы вы могли передать результат (например, byte [] или String) чтения входного потока перед его использованием.

...