1

我有这个 java 函数,它从 Inputstreams 中提取字符串并返回一个列表。它使用 java.util.Scanner 和 java.util.regex.Pattern。

问题是,它似乎只在我第一次调用它时才起作用。如果我反转我的调用,同样只有第一个调用有效,第二个调用永远不会返回任何匹配项。

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

我怀疑我需要重置列表或函数中的某些东西——如果不是函数本身的话。我已经尝试过,但是当我这样做时不断出现异常。

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

..scanner.close(); 返回什么

我正在 Android SDK 中开发这个。

4

2 回答 2

2

您的提取方法是否会一直读取到流结束?我怀疑您需要关闭并重新打开流才能从头开始。如果是这种情况,更好的方法是一次性通过流进行所有匹配。

于 2010-09-07T01:37:43.563 回答
0

如果输入流支持 mark (markSupported() == true),那么您可以在方法中使用 mark() ... reset()。如果没有,您将不得不重新创建输入流或更改您的方法,以便在使用输入流之前传入读取输入流的结果(例如 byte[] 或 String)。

于 2010-09-07T05:35:37.493 回答