1

Inputstreamsから文字列を抽出し、リストを返すこのJava関数があります。java.util.Scannerとjava.util.regex.Patternを使用します。

問題は、私が最初にそれを呼び出したときだけそれが機能するように見えるということです。呼び出しを逆にすると、最初の呼び出しだけが機能し、2番目の呼び出しは一致を返しません。

リストlsphones=extract(is、pattern、0); リストlsemails=extract(is、pattern "、0);

関数自体ではないにしても、関数内のリストなどをリセットする必要があるのではないかと思います。試しましたが、例外が発生し続けます。

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

..スキャナー.close(); 何を返す

私はこれをAndroidSDKで開発しています。

4

2 に答える 2

2

抽出メソッドはストリームの最後まで読み取りますか?最初からやり直すには、ストリームを閉じてから再度開く必要があると思います。この場合、より良いアプローチは、ストリームを1回通過するときにすべてのマッチングを行うことです。

于 2010-09-07T01:37:43.563 に答える
0

入力ストリームがmark(markSupported()== true)をサポートしている場合は、メソッドでmark()... reset()を使用できます。そうでない場合は、入力ストリームを再作成するか、メソッドを変更して、使用する前に入力ストリームを読み取った結果(byte []やStringなど)を渡す必要があります。

于 2010-09-07T05:35:37.493 に答える